Lines Matching refs:db
8 #include "db-passwd-file.h"
81 else if (!pw->db->userdb || **args == '\0') {
94 if (pw->db->userdb_warn_missing) {
101 } else if (!pw->db->userdb || **args == '\0')
119 if (pw->db->userdb)
132 if (*args != NULL && **args != '\0' && pw->db->userdb) {
152 passwd_file_new(struct db_passwd_file *db, const char *expanded_path)
157 pw->db = db;
161 if (hash_table_is_created(db->files))
162 hash_table_insert(db->files, pw->path, pw);
228 } else if (pw->db->debug) {
246 if (hash_table_is_created(pw->db->files))
247 hash_table_remove(pw->db->files, pw->path);
275 if (pw->db->default_file != pw)
303 static void db_passwd_file_set_userdb(struct db_passwd_file *db)
305 db->userdb = TRUE;
308 db->userdb_warn_missing =
316 struct db_passwd_file *db;
320 db = db_passwd_file_find(path);
321 if (db != NULL) {
322 db->refcount++;
324 db_passwd_file_set_userdb(db);
325 return db;
328 db = i_new(struct db_passwd_file, 1);
329 db->refcount = 1;
331 db_passwd_file_set_userdb(db);
332 db->debug = debug;
339 db->vars = TRUE;
343 if (percents && !db->vars) {
356 db->path = i_strdup(path);
357 if (db->vars) {
358 hash_table_create(&db->files, default_pool, 0,
361 db->default_file = passwd_file_new(db, path);
364 db->next = passwd_files;
365 passwd_files = db;
366 return db;
369 void db_passwd_file_parse(struct db_passwd_file *db)
373 if (db->default_file != NULL && db->default_file->stamp == 0) {
375 if (passwd_file_open(db->default_file, TRUE, &error) < 0)
382 struct db_passwd_file *db = *_db;
389 i_assert(db->refcount >= 0);
390 if (--db->refcount > 0)
394 if (*p == db) {
395 *p = db->next;
400 if (db->default_file != NULL)
401 passwd_file_free(db->default_file);
403 iter = hash_table_iterate_init(db->files);
404 while (hash_table_iterate(iter, db->files, &path, &file))
407 hash_table_destroy(&db->files);
409 i_free(db->path);
410 i_free(db);
428 int db_passwd_file_lookup(struct db_passwd_file *db,
437 if (!db->vars)
438 pw = db->default_file;
441 if (auth_request_var_expand(dest, db->path, request, path_fix,
445 db->path, error);
449 pw = hash_table_lookup(db->files, str_c(dest));
452 pw = passwd_file_new(db, str_c(dest));