summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2011-05-11 15:27:01 +0200
committerKarolin Seeger <kseeger@samba.org>2011-05-15 20:21:22 +0200
commit8c1db29945a8d833d9b400027382a3ddc0c52b29 (patch)
treeb5d6b2f543109b4951a74f0a0f5658d92536eff3
parent3913147532249bfc9aa8165e31822df20bc568d8 (diff)
downloadsamba-8c1db29945a8d833d9b400027382a3ddc0c52b29.tar.gz
s3:registry: add create_sorted_subkeys() to delete and recreate the sorted subkeys key
This is to be used from other places than the key_exists() code path. (cherry picked from commit 39bc60c77d5083c5ca68a83f55a3c6efde9b78a7)
-rw-r--r--source3/registry/reg_backend_db.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/source3/registry/reg_backend_db.c b/source3/registry/reg_backend_db.c
index c9ab18ab1f5..013a1e3f87e 100644
--- a/source3/registry/reg_backend_db.c
+++ b/source3/registry/reg_backend_db.c
@@ -47,6 +47,8 @@ static int regdb_fetch_values_internal(struct db_context *db, const char* key,
static bool regdb_store_values_internal(struct db_context *db, const char *key,
struct regval_ctr *values);
+static NTSTATUS create_sorted_subkeys(const char *key);
+
/* List the deepest path into the registry. All part components will be created.*/
/* If you want to have a part of the path controlled by the tdb and part by
@@ -1423,6 +1425,25 @@ static NTSTATUS create_sorted_subkeys_internal(const char *key,
return status;
}
+static NTSTATUS create_sorted_subkeys(const char *key)
+{
+ char *sorted_subkeys_keyname;
+ NTSTATUS status;
+
+ sorted_subkeys_keyname = talloc_asprintf(talloc_tos(), "%s\\%s",
+ REG_SORTED_SUBKEYS_PREFIX,
+ key);
+ if (sorted_subkeys_keyname == NULL) {
+ status = NT_STATUS_NO_MEMORY;
+ goto done;
+ }
+
+ status = create_sorted_subkeys_internal(key, sorted_subkeys_keyname);
+
+done:
+ return status;
+}
+
struct scan_subkey_state {
char *name;
bool scanned;