diff options
author | Jeremy Allison <jra@samba.org> | 2000-04-28 02:06:19 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2000-04-28 02:06:19 +0000 |
commit | ea9b2ed326caba0f7dfa514167bb6f89bc852a18 (patch) | |
tree | 14c3dcc899c5de40a364f5508578fb8f4563f074 /source3 | |
parent | 1f7d96ee0310f50af953621a81d335778b0c76dc (diff) | |
download | samba-ea9b2ed326caba0f7dfa514167bb6f89bc852a18.tar.gz samba-ea9b2ed326caba0f7dfa514167bb6f89bc852a18.tar.bz2 samba-ea9b2ed326caba0f7dfa514167bb6f89bc852a18.zip |
Added tdb_get/set_int_byblob, which takes a size_t len and then implemented
the tdb_get/set_int string functions in terms of them. Will be useful in storing
POSIX pending close records (which are ints but indexed by dev/inode pairs).
Jeremy.
(This used to be commit d69e4c6a48746459f973144393529b1f40680d2f)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/proto.h | 2 | ||||
-rw-r--r-- | source3/tdb/tdb.c | 26 |
2 files changed, 21 insertions, 7 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index f9479532fa..1d952da4ee 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -3469,7 +3469,9 @@ int tdb_writelock(TDB_CONTEXT *tdb); int tdb_writeunlock(TDB_CONTEXT *tdb); int tdb_lockchain(TDB_CONTEXT *tdb, TDB_DATA key); int tdb_unlockchain(TDB_CONTEXT *tdb, TDB_DATA key); +int tdb_get_int_byblob(TDB_CONTEXT *tdb, char *keyval, size_t len); int tdb_get_int(TDB_CONTEXT *tdb, char *keystr); +int tdb_store_int_byblob(TDB_CONTEXT *tdb, char *keystr, size_t len, int v); int tdb_store_int(TDB_CONTEXT *tdb, char *keystr, int v); /*The following definitions come from utils/nbio.c */ diff --git a/source3/tdb/tdb.c b/source3/tdb/tdb.c index 3b85b71217..e884bb34b9 100644 --- a/source3/tdb/tdb.c +++ b/source3/tdb/tdb.c @@ -1313,14 +1313,15 @@ int tdb_unlockchain(TDB_CONTEXT *tdb, TDB_DATA key) 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) +/* fetch a value by a arbitrary blob key, return -1 if not found */ + +int tdb_get_int_byblob(TDB_CONTEXT *tdb, char *keyval, size_t len) { TDB_DATA key, data; int ret; - key.dptr = keystr; - key.dsize = strlen(keystr); + key.dptr = keyval; + key.dsize = len; data = tdb_fetch(tdb, key); if (!data.dptr || data.dsize != sizeof(int)) return -1; @@ -1328,16 +1329,27 @@ int tdb_get_int(TDB_CONTEXT *tdb, char *keystr) free(data.dptr); return ret; } +/* fetch a value by string key, return -1 if not found */ +int tdb_get_int(TDB_CONTEXT *tdb, char *keystr) +{ + return tdb_get_int_byblob(tdb, keystr, strlen(keystr)); +} -/* store a value by string key, return 0 on success, -1 on failure */ -int tdb_store_int(TDB_CONTEXT *tdb, char *keystr, int v) +/* store a value by an arbitary blob key, return 0 on success, -1 on failure */ +int tdb_store_int_byblob(TDB_CONTEXT *tdb, char *keystr, size_t len, int v) { TDB_DATA key, data; key.dptr = keystr; - key.dsize = strlen(keystr); + key.dsize = len; data.dptr = (void *)&v; data.dsize = sizeof(int); return tdb_store(tdb, key, data, TDB_REPLACE); } + +/* store a value by string key, return 0 on success, -1 on failure */ +int tdb_store_int(TDB_CONTEXT *tdb, char *keystr, int v) +{ + return tdb_store_int_byblob(tdb, keystr, strlen(keystr), v); +} |