NTSTATUS g_lock_write_data(struct g_lock_ctx *ctx, TDB_DATA key,
const uint8_t *buf, size_t buflen);
+int g_lock_locks_read(struct g_lock_ctx *ctx,
+ int (*fn)(TDB_DATA key, void *private_data),
+ void *private_data);
int g_lock_locks(struct g_lock_ctx *ctx,
int (*fn)(TDB_DATA key, void *private_data),
void *private_data);
return state->fn(key, state->private_data);
}
+int g_lock_locks_read(struct g_lock_ctx *ctx,
+ int (*fn)(TDB_DATA key, void *private_data),
+ void *private_data)
+{
+ struct g_lock_locks_state state;
+ NTSTATUS status;
+ int count;
+
+ SMB_ASSERT(!ctx->busy);
+
+ state.fn = fn;
+ state.private_data = private_data;
+
+ status = dbwrap_traverse_read(ctx->db,
+ g_lock_locks_fn,
+ &state,
+ &count);
+ if (!NT_STATUS_IS_OK(status)) {
+ return -1;
+ }
+ return count;
+}
+
int g_lock_locks(struct g_lock_ctx *ctx,
int (*fn)(TDB_DATA key, void *private_data),
void *private_data)
state.fn = fn;
state.private_data = private_data;
- status = dbwrap_traverse_read(ctx->db, g_lock_locks_fn, &state, &count);
+ status = dbwrap_traverse(ctx->db, g_lock_locks_fn, &state, &count);
if (!NT_STATUS_IS_OK(status)) {
return -1;
}
goto done;
}
- ret = g_lock_locks(g_ctx, net_g_lock_dumpall_fn, g_ctx);
+ ret = g_lock_locks_read(g_ctx, net_g_lock_dumpall_fn, g_ctx);
done:
TALLOC_FREE(g_ctx);
TALLOC_FREE(msg);
goto done;
}
- ret = g_lock_locks(g_ctx, net_g_lock_locks_fn, NULL);
+ ret = g_lock_locks_read(g_ctx, net_g_lock_locks_fn, NULL);
done:
TALLOC_FREE(g_ctx);
TALLOC_FREE(msg);