Lines Matching refs:db

47      DB *db;  in osa_adb_create_db()  local
58 db = dbopen(filename, O_RDWR | O_CREAT | O_EXCL, 0600, DB_BTREE, &btinfo); in osa_adb_create_db()
59 if (db == NULL) in osa_adb_create_db()
61 if (db->close(db) < 0) in osa_adb_create_db()
134 osa_adb_db_t db; in osa_adb_init_db() local
142 db = (osa_adb_princ_t) malloc(sizeof(osa_adb_db_ent)); in osa_adb_init_db()
143 if (db == NULL) in osa_adb_init_db()
146 memset(db, 0, sizeof(*db)); in osa_adb_init_db()
147 db->info.hash = NULL; in osa_adb_init_db()
148 db->info.bsize = 256; in osa_adb_init_db()
149 db->info.ffactor = 8; in osa_adb_init_db()
150 db->info.nelem = 25000; in osa_adb_init_db()
151 db->info.lorder = 0; in osa_adb_init_db()
153 db->btinfo.flags = 0; in osa_adb_init_db()
154 db->btinfo.cachesize = 0; in osa_adb_init_db()
155 db->btinfo.psize = 4096; in osa_adb_init_db()
156 db->btinfo.lorder = 0; in osa_adb_init_db()
157 db->btinfo.minkeypage = 0; in osa_adb_init_db()
158 db->btinfo.compare = NULL; in osa_adb_init_db()
159 db->btinfo.prefix = NULL; in osa_adb_init_db()
199 free(db); in osa_adb_init_db()
210 free(db); in osa_adb_init_db()
226 free(db); in osa_adb_init_db()
234 db->lock = &lockp->lockinfo; in osa_adb_init_db()
235 db->lock->refcnt++; in osa_adb_init_db()
237 db->opencnt = 0; in osa_adb_init_db()
238 db->filename = strdup(filename); in osa_adb_init_db()
239 db->magic = magic; in osa_adb_init_db()
241 *dbp = db; in osa_adb_init_db()
246 krb5_error_code osa_adb_fini_db(osa_adb_db_t db, int magic) in osa_adb_fini_db() argument
248 if (db->magic != magic) in osa_adb_fini_db()
250 if (db->lock->refcnt == 0) { in osa_adb_fini_db()
254 db->lock->refcnt--; in osa_adb_fini_db()
257 if (db->lock->refcnt == 0) { in osa_adb_fini_db()
265 if (db->lock->lockmode != KRB5_DB_LOCKMODE_PERMANENT) in osa_adb_fini_db()
266 (void) fclose(db->lock->lockfile); in osa_adb_fini_db()
267 db->lock->lockfile = NULL; in osa_adb_fini_db()
268 krb5_free_context(db->lock->context); in osa_adb_fini_db()
271 db->magic = 0; in osa_adb_fini_db()
272 free(db->filename); in osa_adb_fini_db()
273 free(db); in osa_adb_fini_db()
277 krb5_error_code osa_adb_get_lock(osa_adb_db_t db, int mode) in osa_adb_get_lock() argument
281 if (db->lock->lockmode >= mode) { in osa_adb_get_lock()
283 db->lock->lockcnt++; in osa_adb_get_lock()
303 if ((ret = krb5_lock_file(db->lock->context, in osa_adb_get_lock()
304 fileno(db->lock->lockfile), in osa_adb_get_lock()
329 if (access(db->lock->filename, F_OK) < 0) { in osa_adb_get_lock()
330 (void) krb5_lock_file(db->lock->context, in osa_adb_get_lock()
331 fileno(db->lock->lockfile), in osa_adb_get_lock()
339 if (unlink(db->lock->filename) < 0) { in osa_adb_get_lock()
344 (void) krb5_lock_file(db->lock->context, in osa_adb_get_lock()
345 fileno(db->lock->lockfile), in osa_adb_get_lock()
355 (void) fclose(db->lock->lockfile); in osa_adb_get_lock()
358 db->lock->lockmode = mode; in osa_adb_get_lock()
359 db->lock->lockcnt++; in osa_adb_get_lock()
363 krb5_error_code osa_adb_release_lock(osa_adb_db_t db) in osa_adb_release_lock() argument
367 if (!db->lock->lockcnt) /* lock already unlocked */ in osa_adb_release_lock()
370 if (--db->lock->lockcnt == 0) { in osa_adb_release_lock()
371 if (db->lock->lockmode == KRB5_DB_LOCKMODE_PERMANENT) { in osa_adb_release_lock()
373 fd = THREEPARAMOPEN(db->lock->filename,O_RDWR | O_CREAT | O_EXCL, in osa_adb_release_lock()
375 if ((db->lock->lockfile = fdopen(fd, "w+F")) == NULL) in osa_adb_release_lock()
377 } else if ((ret = krb5_lock_file(db->lock->context, in osa_adb_release_lock()
378 fileno(db->lock->lockfile), in osa_adb_release_lock()
382 db->lock->lockmode = 0; in osa_adb_release_lock()
387 krb5_error_code osa_adb_open_and_lock(osa_adb_princ_t db, int locktype) in osa_adb_open_and_lock() argument
391 ret = osa_adb_get_lock(db, locktype); in osa_adb_open_and_lock()
394 if (db->opencnt) in osa_adb_open_and_lock()
397 db->db = dbopen(db->filename, O_RDWR, 0600, DB_BTREE, &db->btinfo); in osa_adb_open_and_lock()
398 if (db->db != NULL) in osa_adb_open_and_lock()
405 db->db = dbopen(db->filename, O_RDWR, 0600, DB_HASH, &db->info); in osa_adb_open_and_lock()
406 if (db->db != NULL) in osa_adb_open_and_lock()
410 (void) osa_adb_release_lock(db); in osa_adb_open_and_lock()
416 db->opencnt++; in osa_adb_open_and_lock()
420 krb5_error_code osa_adb_close_and_unlock(osa_adb_princ_t db) in osa_adb_close_and_unlock() argument
422 if (--db->opencnt) in osa_adb_close_and_unlock()
423 return osa_adb_release_lock(db); in osa_adb_close_and_unlock()
424 if(db->db != NULL && db->db->close(db->db) == -1) { in osa_adb_close_and_unlock()
425 (void) osa_adb_release_lock(db); in osa_adb_close_and_unlock()
429 db->db = NULL; in osa_adb_close_and_unlock()
431 return(osa_adb_release_lock(db)); in osa_adb_close_and_unlock()