X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/a4243347741f0f7079858e03bca8fc32990f525c..45e6d04af841f7f1114c22d24c3a58d797a6580b:/lib/trackdb.c diff --git a/lib/trackdb.c b/lib/trackdb.c index 9125c0c..0b10d72 100644 --- a/lib/trackdb.c +++ b/lib/trackdb.c @@ -23,15 +23,11 @@ * This file is getting in desparate need of splitting up... */ -#include -#include "types.h" +#include "common.h" -#include -#include #include #include #include -#include #include #include #include @@ -39,7 +35,6 @@ #include #include #include -#include #include #include #include @@ -145,6 +140,17 @@ DB *trackdb_globaldb; /* global preferences */ */ DB *trackdb_noticeddb; /* when track noticed */ +/** @brief The schedule database + * + * - Keys are ID strings, generated at random + * - Values are encoded key-value pairs + * - There can be more than one value per key + * - Data cannot be reconstructed + * + * See @ref server/schedule.c for further information. + */ +DB *trackdb_scheduledb; + /** @brief The user database * - Keys are usernames * - Values are encoded key-value pairs @@ -460,6 +466,7 @@ void trackdb_open(int flags) { trackdb_globaldb = open_db("global.db", 0, DB_HASH, dbflags, 0666); trackdb_noticeddb = open_db("noticed.db", DB_DUPSORT, DB_BTREE, dbflags, 0666); + trackdb_scheduledb = open_db("schedule.db", 0, DB_HASH, dbflags, 0666); if(!trackdb_existing_database) { /* Stash the database version */ char buf[32]; @@ -490,6 +497,8 @@ void trackdb_close(void) { fatal(0, "error closing global.db: %s", db_strerror(err)); if((err = trackdb_noticeddb->close(trackdb_noticeddb, 0))) fatal(0, "error closing noticed.db: %s", db_strerror(err)); + if((err = trackdb_scheduledb->close(trackdb_scheduledb, 0))) + fatal(0, "error closing schedule.db: %s", db_strerror(err)); if((err = trackdb_usersdb->close(trackdb_usersdb, 0))) fatal(0, "error closing users.db: %s", db_strerror(err)); trackdb_tracksdb = trackdb_searchdb = trackdb_prefsdb = 0; @@ -2195,7 +2204,7 @@ static int reap_rescan(ev_source attribute((unused)) *ev, eventlog("rescanned", (char *)0); /* Call rescanned callbacks */ while(rescanned_list) { - void (*rescanned)(void *u) = rescanned_list->rescanned; + void (*rescanned)(void *u_) = rescanned_list->rescanned; void *ru = rescanned_list->ru; rescanned_list = rescanned_list->next; @@ -2374,6 +2383,9 @@ char **trackdb_new(int *ntracksp, * @return null-terminated array of track names, or NULL on deadlock * * The most recently added track is first in the array. + * + * TODO: exclude tracks that have been deleted again. + * */ static char **trackdb_new_tid(int *ntracksp, int maxtracks, @@ -2669,6 +2681,7 @@ int trackdb_adduser(const char *user, user, rights, email); else info("created user '%s' with rights '%s'", user, rights); + eventlog("user-add", user, (char *)0); return 0; } } @@ -2686,6 +2699,7 @@ int trackdb_deluser(const char *user) { return -1; } info("deleted user '%s'", user); + eventlog("user-delete", user, (char *)0); return 0; } @@ -2765,8 +2779,10 @@ int trackdb_edituserinfo(const char *user, if(e) { error(0, "unknown user '%s'", user); return -1; - } else + } else { + eventlog("user-edit", user, key, (char *)0); return 0; + } } /** @brief List all users @@ -2832,6 +2848,7 @@ int trackdb_confirm(const char *user, const char *confirmation, switch(e) { case 0: info("registration confirmed for user '%s'", user); + eventlog("user-confirm", user, (char *)0); return 0; case DB_NOTFOUND: error(0, "confirmation for nonexistent user '%s'", user);