diff options
author | Jeremy Allison <jra@samba.org> | 2002-01-09 01:34:44 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2002-01-09 01:34:44 +0000 |
commit | 6bdea23cc5a4ad7301c5ba80ae870bd7c4fc2761 (patch) | |
tree | 437155d27e461bbf56dd003fdd70d459d0e74f63 | |
parent | ea27606e5b1eed58826661fd4008ecafcc14bdf3 (diff) | |
download | samba-6bdea23cc5a4ad7301c5ba80ae870bd7c4fc2761.tar.gz samba-6bdea23cc5a4ad7301c5ba80ae870bd7c4fc2761.tar.xz samba-6bdea23cc5a4ad7301c5ba80ae870bd7c4fc2761.zip |
Added int32 versions of the endian-dependent functions.
Jeremy.
-rw-r--r-- | source/include/proto.h | 4 | ||||
-rw-r--r-- | source/tdb/tdbutil.c | 64 |
2 files changed, 68 insertions, 0 deletions
diff --git a/source/include/proto.h b/source/include/proto.h index d996beaef87..cdf23b08111 100644 --- a/source/include/proto.h +++ b/source/include/proto.h @@ -4720,6 +4720,10 @@ int tdb_fetch_int_byblob(TDB_CONTEXT *tdb, char *keyval, size_t len); int tdb_fetch_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); +int32 tdb_fetch_int32_byblob(TDB_CONTEXT *tdb, char *keyval, size_t len); +int32 tdb_fetch_int32(TDB_CONTEXT *tdb, char *keystr); +int tdb_store_int32_byblob(TDB_CONTEXT *tdb, char *keystr, size_t len, int32 v); +int tdb_store_int32(TDB_CONTEXT *tdb, char *keystr, int32 v); int tdb_store_by_string(TDB_CONTEXT *tdb, char *keystr, void *buffer, int len); TDB_DATA tdb_fetch_by_string(TDB_CONTEXT *tdb, char *keystr); int tdb_change_int_atomic(TDB_CONTEXT *tdb, char *keystr, int *oldval, int change_val); diff --git a/source/tdb/tdbutil.c b/source/tdb/tdbutil.c index 6471f774ee4..34c0967b720 100644 --- a/source/tdb/tdbutil.c +++ b/source/tdb/tdbutil.c @@ -54,6 +54,7 @@ void tdb_unlock_bystring(TDB_CONTEXT *tdb, char *keyval) /**************************************************************************** Fetch a value by a arbitrary blob key, return -1 if not found. + JRA. DEPRECATED ! Use tdb_fetch_int32_byblob instead. ****************************************************************************/ int tdb_fetch_int_byblob(TDB_CONTEXT *tdb, char *keyval, size_t len) @@ -74,6 +75,7 @@ int tdb_fetch_int_byblob(TDB_CONTEXT *tdb, char *keyval, size_t len) /**************************************************************************** Fetch a value by string key, return -1 if not found. + JRA. DEPRECATED ! Use tdb_fetch_int32 instead. ****************************************************************************/ int tdb_fetch_int(TDB_CONTEXT *tdb, char *keystr) @@ -83,6 +85,7 @@ int tdb_fetch_int(TDB_CONTEXT *tdb, char *keystr) /**************************************************************************** Store a value by an arbitary blob key, return 0 on success, -1 on failure. + JRA. DEPRECATED ! Use tdb_store_int32_byblob instead. ****************************************************************************/ int tdb_store_int_byblob(TDB_CONTEXT *tdb, char *keystr, size_t len, int v) @@ -99,6 +102,7 @@ int tdb_store_int_byblob(TDB_CONTEXT *tdb, char *keystr, size_t len, int v) /**************************************************************************** Store a value by string key, return 0 on success, -1 on failure. + JRA. DEPRECATED ! Use tdb_store_int32 instead. ****************************************************************************/ int tdb_store_int(TDB_CONTEXT *tdb, char *keystr, int v) @@ -107,6 +111,66 @@ int tdb_store_int(TDB_CONTEXT *tdb, char *keystr, int v) } /**************************************************************************** + Fetch a int32 value by a arbitrary blob key, return -1 if not found. + Output is int32 in native byte order. +****************************************************************************/ + +int32 tdb_fetch_int32_byblob(TDB_CONTEXT *tdb, char *keyval, size_t len) +{ + TDB_DATA key, data; + int32 ret; + + key.dptr = keyval; + key.dsize = len; + data = tdb_fetch(tdb, key); + if (!data.dptr || data.dsize != sizeof(int32)) + return -1; + + ret = IVAL(data.dptr,0); + SAFE_FREE(data.dptr); + return ret; +} + +/**************************************************************************** + Fetch a int32 value by string key, return -1 if not found. + Output is int32 in native byte order. +****************************************************************************/ + +int32 tdb_fetch_int32(TDB_CONTEXT *tdb, char *keystr) +{ + return tdb_fetch_int32_byblob(tdb, keystr, strlen(keystr) + 1); +} + +/**************************************************************************** + Store a int32 value by an arbitary blob key, return 0 on success, -1 on failure. + Input is int32 in native byte order. Output in tdb is in little-endian. +****************************************************************************/ + +int tdb_store_int32_byblob(TDB_CONTEXT *tdb, char *keystr, size_t len, int32 v) +{ + TDB_DATA key, data; + int32 v_store; + + key.dptr = keystr; + key.dsize = len; + SIVAL(&v_store,0,v); + data.dptr = (void *)&v_store; + data.dsize = sizeof(int32); + + return tdb_store(tdb, key, data, TDB_REPLACE); +} + +/**************************************************************************** + Store a int32 value by string key, return 0 on success, -1 on failure. + Input is int32 in native byte order. Output in tdb is in little-endian. +****************************************************************************/ + +int tdb_store_int32(TDB_CONTEXT *tdb, char *keystr, int32 v) +{ + return tdb_store_int32_byblob(tdb, keystr, strlen(keystr) + 1, v); +} + +/**************************************************************************** Store a buffer by a null terminated string key. Return 0 on success, -1 on failure. ****************************************************************************/ |