static cell AMX_NATIVE_CALL SQL_MakeDbTuple(AMX *amx, cell *params) { SQL_Connection *sql = new SQL_Connection; int len; sql->port = 0; sql->host = strdup(""); sql->user = strdup(""); sql->pass = strdup(""); char *db = MF_GetAmxString(amx, params[4], 0, &len); char path[255]; FILE *fp; MF_BuildPathnameR(path, sizeof(path)-1, "%s", db); if ((fp=fopen(path, "rb"))) { fclose(fp); sql->db = strdup(path); } else { MF_BuildPathnameR(path, sizeof(path)-1, "%s/sqlite3/%s.sq3", MF_GetLocalInfo("amxx_datadir", "addons/amxmodx/data"), db); sql->db = strdup(path); } unsigned int num = MakeHandle(sql, Handle_Connection, FreeConnection); return num; }
static cell AMX_NATIVE_CALL csdm_reload_cfg(AMX *amx, cell *params) { char file[255]; file[0] = '\0'; if (params[0] / sizeof(cell) != 0) { int len; char *str = MF_GetAmxString(amx, params[1], 0, &len); if (str[0] != '\0') { MF_BuildPathnameR(file, sizeof(file)-1, "%s/%s", LOCALINFO("amxx_configsdir"), str); } } if (file[0] == '\0') { MF_BuildPathnameR(file, sizeof(file)-1, "%s/csdm.cfg", LOCALINFO("amxx_configsdir")); } if (g_Config.ReadConfig(file) != Config_Ok) { MF_Log("Could not read config file: %s", file); return 0; } return 1; }
int ReadConfig(void) { char FileName[512]; MF_BuildPathnameR(FileName,sizeof(FileName),"%s",get_localinfo("amxx_configsdir","addons/amxmodx/configs")); strncat(FileName,"/hamdata.ini",sizeof(FileName)-1); FILE *fp=fopen(FileName,"r"); ke::SafeSprintf(CurrentModName, sizeof(CurrentModName), "%s", MF_GetModname()); if (!fp) { MF_Log("Unable to open \"%s\" for reading.", FileName); return -1; } char data[2048]; int insec=0; while (!feof(fp)) { data[0]='\0'; fgets(data, sizeof(data)-1, fp); char *b=&data[0]; switch(lex(b)) { case LEX_PEV: { if (insec) { process_pev(b); } break; }; case LEX_BASE: { if (insec) { process_base(b); } break; }; case LEX_MIRROR: { read_mirror(b); break; }; case LEX_START_SEC: { insec=read_start_section(b); if (!insec) { skip_to_end_of_section(fp); } break; }; case LEX_END_SEC: { insec=0; break; }; case LEX_UNKNOWN: { if (insec) { process_key(b); } }; } } fclose(fp); return 1; }