#include <db.h>
#include <sys/socket.h>
-#include <pcre.h>
#include <unistd.h>
#include <errno.h>
#include <stddef.h>
#include "event.h"
#include "mem.h"
+#include "regexp.h"
#include "kvp.h"
#include "log.h"
#include "vector.h"
}
return 0;
default:
+ *aliasp = 0;
return err;
}
}
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);
* 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;
* @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;
* @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;
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;