#ifdef _MSC_VER #include #endif #include "gamedb.h" #include "kernel/config.h" #include "kernel/calendar.h" #include "kernel/faction.h" #include "kernel/db/driver.h" #include "util/strings.h" static int generate_factions(void *data, db_faction *results, int nresults) { int i; faction **iter = (faction **)data; for (i = 0; *iter && i != nresults; ++i) { faction *f = *iter; const char *pwhash; results[i].p_uid = &f->uid; results[i].no = f->no; results[i].email = faction_getemail(f); pwhash = faction_getpassword(f); str_strlcpy(results[i].pwhash, pwhash ? pwhash : "", sizeof(results[i].pwhash)); *iter = f->next; } return i; } int gamedb_update(void) { int err; const char *dbname; dbname = config_get("game.dbname"); err = db_driver_open(DB_GAME, dbname); if (err == 0) { faction *list = factions; db_driver_update_factions(generate_factions, &list); db_driver_compact(turn); db_driver_close(DB_GAME); } return err; }