added a private pointer to tdb_traverse() to allow callers to supply
authorAndrew Tridgell <tridge@samba.org>
Sun, 28 Mar 2004 01:33:32 +0000 (01:33 +0000)
committerAndrew Tridgell <tridge@samba.org>
Sun, 28 Mar 2004 01:33:32 +0000 (01:33 +0000)
data to their traverse function
(This used to be commit 76bf816485bf869c293791659da5dff2425d2d32)

source4/lib/tdb/tdb.c
source4/lib/tdb/tdb.h

index 1fef5d54fa9235a36d8335af1e21632c1856e9a5..8fbf1289146f7c67353d708af943f5cb1b80b9a4 100644 (file)
@@ -1292,7 +1292,7 @@ static int tdb_next_lock(TDB_CONTEXT *tdb, struct tdb_traverse_lock *tlock,
    if fn is NULL then it is not called
    a non-zero return value from fn() indicates that the traversal should stop
   */
    if fn is NULL then it is not called
    a non-zero return value from fn() indicates that the traversal should stop
   */
-int tdb_traverse(TDB_CONTEXT *tdb, tdb_traverse_func fn)
+int tdb_traverse(TDB_CONTEXT *tdb, tdb_traverse_func fn, void *private)
 {
        TDB_DATA key, dbuf;
        struct list_struct rec;
 {
        TDB_DATA key, dbuf;
        struct list_struct rec;
@@ -1330,7 +1330,7 @@ int tdb_traverse(TDB_CONTEXT *tdb, tdb_traverse_func fn)
                        ret = -1;
                        goto out;
                }
                        ret = -1;
                        goto out;
                }
-               if (fn && fn(tdb, key, dbuf)) {
+               if (fn && fn(tdb, key, dbuf, private)) {
                        /* They want us to terminate traversal */
                        ret = count;
                        if (unlock_record(tdb, tl.off) != 0) {
                        /* They want us to terminate traversal */
                        ret = count;
                        if (unlock_record(tdb, tl.off) != 0) {
index d20f4cd677c55d2ec3d8be22a0c4d0926bbfc590..b3a28b7440e1289f2d8ca162c11abd3443113146 100644 (file)
@@ -98,7 +98,7 @@ typedef struct tdb_context {
        int open_flags; /* flags used in the open - needed by reopen */
 } TDB_CONTEXT;
 
        int open_flags; /* flags used in the open - needed by reopen */
 } TDB_CONTEXT;
 
-typedef int (*tdb_traverse_func)(TDB_CONTEXT *, TDB_DATA, TDB_DATA);
+typedef int (*tdb_traverse_func)(TDB_CONTEXT *, TDB_DATA, TDB_DATA, void *);
 typedef void (*tdb_log_func)(TDB_CONTEXT *, int , const char *, ...);
 
 TDB_CONTEXT *tdb_open(const char *name, int hash_size, int tdb_flags,
 typedef void (*tdb_log_func)(TDB_CONTEXT *, int , const char *, ...);
 
 TDB_CONTEXT *tdb_open(const char *name, int hash_size, int tdb_flags,
@@ -119,7 +119,7 @@ int tdb_append(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA new_dbuf);
 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_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, tdb_traverse_func fn);
+int tdb_traverse(TDB_CONTEXT *tdb, tdb_traverse_func fn, void *);
 int tdb_exists(TDB_CONTEXT *tdb, TDB_DATA key);
 int tdb_lockkeys(TDB_CONTEXT *tdb, u32 number, TDB_DATA keys[]);
 void tdb_unlockkeys(TDB_CONTEXT *tdb);
 int tdb_exists(TDB_CONTEXT *tdb, TDB_DATA key);
 int tdb_lockkeys(TDB_CONTEXT *tdb, u32 number, TDB_DATA keys[]);
 void tdb_unlockkeys(TDB_CONTEXT *tdb);