#include "amxxmodule.h" #include "sqlite_header.h" #include "sqlheaders.h" static g_ident = 0; SqlFunctions g_SqliteFuncs = { &g_Sqlite, SetMysqlAffinity, NULL }; int SetMysqlAffinity(AMX *amx) { MF_AmxReRegister(amx, g_BaseSqlNatives, -1); MF_AmxReRegister(amx, g_ThreadSqlNatives, -1); return 0; } bool DirExists(const char *dir) { #if defined WIN32 || defined _WIN32 DWORD attr = GetFileAttributes(dir); if (attr == INVALID_FILE_ATTRIBUTES) return false; if (attr & FILE_ATTRIBUTE_DIRECTORY) return true; #else struct stat s; if (stat(dir, &s) != 0) return false; if (S_ISDIR(s.st_mode)) return true; #endif return false; } void OnAmxxAttach() { MF_AddNatives(g_BaseSqlNatives); MF_AddNatives(g_ThreadSqlNatives); g_SqliteFuncs.prev = (SqlFunctions *)MF_RegisterFunctionEx(&g_SqliteFuncs, SQL_DRIVER_FUNC); MF_AddLibraries("dbi", LibType_Class, &g_ident); //override any mysqlx old compat stuff MF_AddNatives(g_OldCompatNatives); MF_OverrideNatives(g_OldCompatNatives, MODULE_NAME); char path[255]; MF_BuildPathnameR(path, sizeof(path)-1, "%s/sqlite3", MF_GetLocalInfo("amxx_datadir", "addons/amxmodx/data")); if (!DirExists(path)) { mkdir(path #if defined __linux__ , 0775 #endif ); } } void OnAmxxDetach() { ShutdownThreading(); MF_RemoveLibraries(&g_ident); } void OnPluginsUnloaded() { FreeAllHandles(Handle_OldResult); FreeAllHandles(Handle_OldDb); FreeAllHandles(Handle_Connection); }