summaryrefslogtreecommitdiffstats
path: root/source3
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2011-08-17 09:51:12 +0200
committerMichael Adam <obnox@samba.org>2011-10-11 14:17:55 +0200
commit8f098a635f713652c4846d71e24c0a199c25b8b7 (patch)
tree5ec4f95af2f27b95da22a77c4c5fe7e7e101f138 /source3
parent6608ba850b45e2f47cd1c2c4b1ad676150a1deea (diff)
downloadsamba-8f098a635f713652c4846d71e24c0a199c25b8b7.tar.gz
samba-8f098a635f713652c4846d71e24c0a199c25b8b7.tar.xz
samba-8f098a635f713652c4846d71e24c0a199c25b8b7.zip
s3:dbwrap: change the dbwrap_traverse() wrapper to return the count in an additional parameter
Diffstat (limited to 'source3')
-rw-r--r--source3/lib/dbwrap/dbwrap.c14
-rw-r--r--source3/lib/dbwrap/dbwrap.h3
-rw-r--r--source3/utils/net_idmap_check.c6
3 files changed, 17 insertions, 6 deletions
diff --git a/source3/lib/dbwrap/dbwrap.c b/source3/lib/dbwrap/dbwrap.c
index f0d61a9a2f2..614251c06fe 100644
--- a/source3/lib/dbwrap/dbwrap.c
+++ b/source3/lib/dbwrap/dbwrap.c
@@ -111,8 +111,18 @@ NTSTATUS dbwrap_delete(struct db_context *db, TDB_DATA key)
NTSTATUS dbwrap_traverse(struct db_context *db,
int (*f)(struct db_record*, void*),
- void *private_data)
+ void *private_data,
+ int *count)
{
int ret = db->traverse(db, f, private_data);
- return (ret < 0) ? NT_STATUS_INTERNAL_DB_CORRUPTION : NT_STATUS_OK;
+
+ if (ret < 0) {
+ return NT_STATUS_INTERNAL_DB_CORRUPTION;
+ }
+
+ if (count != NULL) {
+ *count = ret;
+ }
+
+ return NT_STATUS_OK;
}
diff --git a/source3/lib/dbwrap/dbwrap.h b/source3/lib/dbwrap/dbwrap.h
index bceba6c2d4d..7dda1bae521 100644
--- a/source3/lib/dbwrap/dbwrap.h
+++ b/source3/lib/dbwrap/dbwrap.h
@@ -65,7 +65,8 @@ TDB_DATA dbwrap_fetch(struct db_context *db, TALLOC_CTX *mem_ctx,
TDB_DATA key);
NTSTATUS dbwrap_traverse(struct db_context *db,
int (*f)(struct db_record*, void*),
- void *private_data);
+ void *private_data,
+ int *count);
/* The following definitions come from lib/dbwrap_util.c */
diff --git a/source3/utils/net_idmap_check.c b/source3/utils/net_idmap_check.c
index 14f2f8d10fa..17389a53bb2 100644
--- a/source3/utils/net_idmap_check.c
+++ b/source3/utils/net_idmap_check.c
@@ -892,7 +892,7 @@ static bool check_do_checks(struct check_ctx* ctx)
return false;
}
- status = dbwrap_traverse(ctx->db, traverse_check, ctx);
+ status = dbwrap_traverse(ctx->db, traverse_check, ctx, NULL);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("failed to traverse %s\n", ctx->name));
@@ -929,7 +929,7 @@ static bool check_transaction_cancel(struct check_ctx* ctx) {
static void check_diff_list(struct check_ctx* ctx) {
- NTSTATUS status = dbwrap_traverse(ctx->diff, traverse_print_diff, ctx);
+ NTSTATUS status = dbwrap_traverse(ctx->diff, traverse_print_diff, ctx, NULL);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("failed to traverse diff\n"));
@@ -965,7 +965,7 @@ static bool check_commit(struct check_ctx* ctx)
return false;
}
- status = dbwrap_traverse(ctx->diff, traverse_commit, ctx);
+ status = dbwrap_traverse(ctx->diff, traverse_commit, ctx, NULL);
if (!NT_STATUS_IS_OK(status)) {
check_transaction_cancel(ctx);