From 88801114667d13f0f7b4fbb289b1d004194a7f18 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Thu, 20 Mar 2008 14:01:13 +0100 Subject: registry: add a transaction wrapper to init_registry_key_internal(). Michael (This used to be commit 8b9cff84d5c39e6d7c315d87ac2fdf7fc0d4e4c4) --- source3/registry/reg_backend_db.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'source3/registry') diff --git a/source3/registry/reg_backend_db.c b/source3/registry/reg_backend_db.c index fc7d2bc2cf..e2e908cb84 100644 --- a/source3/registry/reg_backend_db.c +++ b/source3/registry/reg_backend_db.c @@ -178,6 +178,37 @@ fail: return ret; } +/** + * Initialize a key in the registry: + * create each component key of the specified path, + * wrapped in one db transaction. + */ +static bool init_registry_key(const char *add_path) +{ + if (regdb->transaction_start(regdb) == -1) { + DEBUG(0, ("init_registry_key: transaction_start failed\n")); + return false; + } + + if (!init_registry_key_internal(add_path)) { + goto fail; + } + + if (regdb->transaction_commit(regdb) == -1) { + DEBUG(0, ("init_registry_key: Could not commit transaction\n")); + return false; + } + + return true; + +fail: + if (regdb->transaction_cancel(regdb) == -1) { + smb_panic("init_registry_key: transaction_cancel failed\n"); + } + + return false; +} + /*********************************************************************** Open the registry data in the tdb ***********************************************************************/ -- cgit