SDB_VISIBLE void sdb_file (Sdb* s, const char *dir) { if (s->lock) sdb_unlock (sdb_lockfile (s->dir)); free (s->dir); s->dir = (dir && *dir)? strdup (dir): NULL; if (s->lock) sdb_lock (sdb_lockfile (s->dir)); }
main () { int r; r = sdb_lock (".lock"); printf ("%d\n", r); r = sdb_lock (".lock"); printf ("%d\n", r); sdb_unlock (".lock"); r = sdb_lock (".lock"); printf ("%d\n", r); }
SDB_VISIBLE void sdb_free (Sdb* s) { if (!s) return; cdb_free (&s->db); if (s->lock) sdb_unlock (sdb_lockfile (s->dir)); ls_free (s->ns); ht_free (s->ht); if (s->fd != -1) close (s->fd); free (s->ndump); free (s->dir); free (s); }