Lines Matching defs:db

39 #include        <db.h>
52 DB *db;
63 db = dbopen(filename, O_RDWR | O_CREAT | O_EXCL, 0600, DB_BTREE, &btinfo);
64 if (db == NULL)
66 if (db->close(db) < 0)
69 /* only create the lock file if we successfully created the db */
140 osa_adb_db_t db;
148 db = (osa_adb_princ_t) malloc(sizeof(osa_adb_db_ent));
149 if (db == NULL)
152 memset(db, 0, sizeof(*db));
153 db->info.hash = NULL;
154 db->info.bsize = 256;
155 db->info.ffactor = 8;
156 db->info.nelem = 25000;
157 db->info.lorder = 0;
159 db->btinfo.flags = 0;
160 db->btinfo.cachesize = 0;
161 db->btinfo.psize = 4096;
162 db->btinfo.lorder = 0;
163 db->btinfo.minkeypage = 0;
164 db->btinfo.compare = NULL;
165 db->btinfo.prefix = NULL;
205 free(db);
216 free(db);
234 free(db);
243 db->lock = &lockp->lockinfo;
244 db->lock->refcnt++;
246 db->opencnt = 0;
247 db->filename = strdup(filename);
248 db->magic = magic;
250 *dbp = db;
256 osa_adb_fini_db(osa_adb_db_t db, int magic)
258 if (db->magic != magic)
260 if (db->lock->refcnt == 0) {
264 db->lock->refcnt--;
267 if (db->lock->refcnt == 0) {
269 * Don't free db->lock->filename, it is used as a key to
275 if (db->lock->lockmode != KRB5_DB_LOCKMODE_PERMANENT)
276 (void) fclose(db->lock->lockfile);
277 db->lock->lockfile = NULL;
278 krb5_free_context(db->lock->context);
281 db->magic = 0;
282 free(db->filename);
283 free(db);
288 osa_adb_get_lock(osa_adb_db_t db, int mode)
292 if (db->lock->lockmode >= mode) {
294 db->lock->lockcnt++;
313 if ((ret = krb5_lock_file(db->lock->context,
314 fileno(db->lock->lockfile),
339 if (access(db->lock->filename, F_OK) < 0) {
340 (void) krb5_lock_file(db->lock->context,
341 fileno(db->lock->lockfile),
349 if (unlink(db->lock->filename) < 0) {
354 (void) krb5_lock_file(db->lock->context,
355 fileno(db->lock->lockfile),
359 /* look just like the db was already locked */
365 (void) fclose(db->lock->lockfile);
368 db->lock->lockmode = mode;
369 db->lock->lockcnt++;
374 osa_adb_release_lock(osa_adb_db_t db)
378 if (!db->lock->lockcnt) /* lock already unlocked */
381 if (--db->lock->lockcnt == 0) {
382 if (db->lock->lockmode == KRB5_DB_LOCKMODE_PERMANENT) {
384 fd = THREEPARAMOPEN(db->lock->filename,O_RDWR | O_CREAT | O_EXCL,
390 if ((db->lock->lockfile = fdopen(fd, "w+F")) == NULL)
392 } else if ((ret = krb5_lock_file(db->lock->context,
393 fileno(db->lock->lockfile),
397 db->lock->lockmode = 0;
403 osa_adb_open_and_lock(osa_adb_princ_t db, int locktype)
407 ret = osa_adb_get_lock(db, locktype);
410 if (db->opencnt)
413 db->db = dbopen(db->filename, O_RDWR, 0600, DB_BTREE, &db->btinfo);
414 if (db->db != NULL)
421 db->db = dbopen(db->filename, O_RDWR, 0600, DB_HASH, &db->info);
422 if (db->db != NULL)
425 (void) osa_adb_release_lock(db);
431 db->opencnt++;
436 osa_adb_close_and_unlock(osa_adb_princ_t db)
438 if (--db->opencnt)
439 return osa_adb_release_lock(db);
440 if(db->db != NULL && db->db->close(db->db) == -1) {
441 (void) osa_adb_release_lock(db);
445 db->db = NULL;
447 return(osa_adb_release_lock(db));