added TDB_INTERNAL, TDB_NOLOCK and TDB_NOMMAP flags.
[kai/samba.git] / source / tdb / tdb.h
index 8c066e7044efcb1623f75c1c081ee33f5c13386b..f4039f119c1b46eecb36953db4212301a0633790 100644 (file)
@@ -46,18 +46,25 @@ typedef struct {
        int *locked; /* set if we have a chain locked */
        int ecode; /* error code for last tdb error */
        struct tdb_header header; /* a cached copy of the header */
+       unsigned flags; /* the flags passed to tdb_open */
 } TDB_CONTEXT;
 
 /* flags to tdb_store() */
 #define TDB_REPLACE 1
 #define TDB_INSERT 2
+#define TDB_MODIFY 3
 
 /* flags for tdb_open() */
 #define TDB_CLEAR_IF_FIRST 1
+#define TDB_INTERNAL 2 /* don't store on disk */
+#define TDB_NOLOCK   4 /* don't do any locking */
+#define TDB_NOMMAP   8 /* don't use mmap */
 
 /* error codes */
 enum TDB_ERROR {TDB_SUCCESS=0, TDB_ERR_CORRUPT, TDB_ERR_IO, TDB_ERR_LOCK, 
-               TDB_ERR_OOM, TDB_ERR_EXISTS};
+               TDB_ERR_OOM, TDB_ERR_EXISTS, TDB_ERR_NOEXIST };
+
+typedef int (*tdb_traverse_func)(TDB_CONTEXT *, TDB_DATA, TDB_DATA, void *);
 
 #if STANDALONE
 TDB_CONTEXT *tdb_open(char *name, int hash_size, int tdb_flags,
@@ -72,6 +79,7 @@ int tdb_close(TDB_CONTEXT *tdb);
 TDB_DATA tdb_firstkey(TDB_CONTEXT *tdb);
 TDB_DATA tdb_nextkey(TDB_CONTEXT *tdb, TDB_DATA key);
 int tdb_traverse(TDB_CONTEXT *tdb, 
-                int (*fn)(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf));
+       int (*fn)(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, void *state),
+       void *state);
 int tdb_exists(TDB_CONTEXT *tdb, TDB_DATA key);
 #endif