X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/657fdb79cbec1dba609675200797415978a50315..a78895812191386f2da97e3795247d0ab9cc5e91:/lib/trackdb.c diff --git a/lib/trackdb.c b/lib/trackdb.c index aa9ad56..9e667e2 100644 --- a/lib/trackdb.c +++ b/lib/trackdb.c @@ -25,7 +25,6 @@ #include #include -#include #include #include #include @@ -39,6 +38,7 @@ #include "event.h" #include "mem.h" +#include "regexp.h" #include "kvp.h" #include "log.h" #include "vector.h" @@ -1182,6 +1182,7 @@ static int compute_alias(char **aliasp, } return 0; default: + *aliasp = 0; return err; } } @@ -1253,7 +1254,7 @@ int trackdb_notice(const char *track, for(;;) { tid = trackdb_begin_transaction(); err = trackdb_notice_tid(track, path, tid); - if((err == DB_LOCK_DEADLOCK)) goto fail; + if(err == DB_LOCK_DEADLOCK) goto fail; break; fail: trackdb_abort_transaction(tid); @@ -2238,18 +2239,19 @@ fail: * If @p re is NULL then always matches. */ static int track_matches(size_t dl, const char *track, size_t tl, - const pcre *re) { - int ovec[3], rc; + const regexp *re) { + size_t ovec[3]; + int rc; if(!re) return 1; track += dl + 1; tl -= (dl + 1); - switch(rc = pcre_exec(re, 0, track, tl, 0, 0, ovec, 3)) { - case PCRE_ERROR_NOMATCH: return 0; + switch(rc = regexp_match(re, track, tl, 0, ovec, 3)) { + case RXERR_NOMATCH: return 0; default: if(rc < 0) { - disorder_error(0, "pcre_exec returned %d, subject '%s'", rc, track); + disorder_error(0, "regexp_match returned %d, subject '%s'", rc, track); return 0; } return 1; @@ -2265,7 +2267,7 @@ static int track_matches(size_t dl, const char *track, size_t tl, * @return 0 or DB_LOCK_DEADLOCK */ static int do_list(struct vector *v, const char *dir, - enum trackdb_listable what, const pcre *re, DB_TXN *tid) { + enum trackdb_listable what, const regexp *re, DB_TXN *tid) { DBC *cursor; DBT k, d; size_t dl; @@ -2363,7 +2365,7 @@ deadlocked: * @return List of tracks */ char **trackdb_list(const char *dir, int *np, enum trackdb_listable what, - const pcre *re) { + const regexp *re) { DB_TXN *tid; int n; struct vector v; @@ -3047,40 +3049,6 @@ static int create_user(const char *user, return trackdb_putdata(trackdb_usersdb, user, k, tid, flags); } -/** @brief Add one pre-existing user - * @param user Username - * @param password password - * @param tid Owning transaction - * @return 0, DB_KEYEXIST or DB_LOCK_DEADLOCK - * - * Used only in upgrade from old versions. - */ -static int one_old_user(const char *user, const char *password, - DB_TXN *tid) { - const char *rights; - - /* www-data doesn't get added */ - if(!strcmp(user, "www-data")) { - disorder_info("not adding www-data to user database"); - return 0; - } - /* pick rights */ - if(!strcmp(user, "root")) - rights = "all"; - else if(trusted(user)) { - rights_type r; - - parse_rights(config->default_rights, &r, 1); - r &= ~(rights_type)(RIGHT_SCRATCH__MASK|RIGHT_MOVE__MASK|RIGHT_REMOVE__MASK); - r |= (RIGHT_ADMIN|RIGHT_RESCAN - |RIGHT_SCRATCH_ANY|RIGHT_MOVE_ANY|RIGHT_REMOVE_ANY); - rights = rights_string(r); - } else - rights = config->default_rights; - return create_user(user, password, rights, 0/*email*/, 0/*confirmation*/, - tid, DB_NOOVERWRITE); -} - /** @brief Create a root user in the user database if there is none */ void trackdb_create_root(void) { int e;