static cell AMX_NATIVE_CALL SQL_QuoteStringFmt(AMX *amx, cell *params) { int len; char *str = MF_FormatAmxString(amx, params, 4, &len); size_t newsize; static char buffer[8192]; if (params[1] != 0) { IDatabase *pDb = (IDatabase *)GetHandle(params[1], Handle_Database); if (!pDb) { MF_LogError(amx, AMX_ERR_NATIVE, "Invalid database handle: %d", params[1]); return 0; } if (pDb->QuoteString(str, buffer, sizeof(buffer)-1, &newsize) == 0) { MF_SetAmxString(amx, params[2], buffer, params[3]); return newsize; } else { return -1; } } else { if (g_Sqlite.QuoteString(str, buffer, sizeof(buffer)-1, &newsize) == 0) { MF_SetAmxString(amx, params[2], buffer, params[3]); return newsize; } else { return -1; } } }
static cell AMX_NATIVE_CALL precache_event(AMX *amx, cell *params) { int len; char *szEvent = MF_FormatAmxString(amx, params, 2, &len); return PRECACHE_EVENT(params[1], (char *)STRING(ALLOC_STRING(szEvent))); }
static cell AMX_NATIVE_CALL SQL_PrepareQuery(AMX *amx, cell *params) { IDatabase *pDb = (IDatabase *)GetHandle(params[1], Handle_Database); if (!pDb) { MF_LogError(amx, AMX_ERR_NATIVE, "Invalid database handle: %d", params[1]); return 0; } int len; char *fmt = MF_FormatAmxString(amx, params, 2, &len); IQuery *pQuery = pDb->PrepareQuery(fmt); if (!pQuery) return 0; AmxQueryInfo *qinfo = new AmxQueryInfo; qinfo->pQuery = pQuery; memset(&qinfo->info, 0, sizeof(QueryInfo)); return MakeHandle(qinfo, Handle_Query, FreeQuery); }