added tdb_get_int() and tdb_store_int()
authorAndrew Tridgell <tridge@samba.org>
Sun, 16 Apr 2000 06:23:11 +0000 (06:23 +0000)
committerAndrew Tridgell <tridge@samba.org>
Sun, 16 Apr 2000 06:23:11 +0000 (06:23 +0000)
they are very useful for database versioning
(This used to be commit cc65914cdcceb1fdeeb5d6ec1cf2ea2f865c5092)

source3/tdb/tdb.c

index 388f4f419fe63e3ffcb0a20de84328dfaefa3a6c..7a0c566f41a918e8b5892290e09feee865a4e496 100644 (file)
@@ -1286,3 +1286,37 @@ int tdb_unlockchain(TDB_CONTEXT *tdb, TDB_DATA key)
 
        return tdb_unlock(tdb, BUCKET(tdb_hash(&key)));
 }
+
+
+/* these two utility functions provide convent routines for storing
+   simple string/value pairs in a tdb. They also serve as examples
+ */
+
+/* fetch a value by string key, return -1 if not found */
+int tdb_get_int(TDB_CONTEXT *tdb, char *keystr)
+{
+       TDB_DATA key, data;
+       int ret;
+
+       key.dptr = keystr;
+       key.dsize = strlen(keystr);
+       data = tdb_fetch(tdb, key);
+       if (!data.dptr || data.dsize != sizeof(int)) return -1;
+       
+       memcpy(&ret, data.dptr, sizeof(int));
+       free(data.dptr);
+       return ret;
+}
+
+/* store a value by string key, return 0 on success, -1 on failure */
+int tdb_store_int(TDB_CONTEXT *tdb, char *keystr, int v)
+{
+       TDB_DATA key, data;
+
+       key.dptr = keystr;
+       key.dsize = strlen(keystr);
+       data.dptr = (void *)&v;
+       data.dsize = sizeof(int);
+
+       return tdb_store(tdb, key, data, TDB_REPLACE);
+}