registry: add function regdb_key_exists() to check for existence of a key.
authorMichael Adam <obnox@samba.org>
Tue, 29 Apr 2008 15:17:02 +0000 (17:17 +0200)
committerMichael Adam <obnox@samba.org>
Wed, 30 Apr 2008 10:42:32 +0000 (12:42 +0200)
The existence of the registry key entry (and not the values entry!) is
taken as the criterion for existence.

Michael
(This used to be commit 207a0ece45d947608df3f764e6bd9b4525d41011)

source3/registry/reg_backend_db.c

index 8c994a0c4e842fd1a83f5867dd98558121ff900d..33454c9064554f45833c8e915f98a036de280389 100644 (file)
@@ -27,6 +27,8 @@
 static struct db_context *regdb = NULL;
 static int regdb_refcount;
 
+static bool regdb_key_exists(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
@@ -725,6 +727,21 @@ static TDB_DATA regdb_fetch_key_internal(const char *key, TALLOC_CTX *mem_ctx)
        return dbwrap_fetch_bystring(regdb, mem_ctx, path);
 }
 
+
+static bool regdb_key_exists(const char *key)
+{
+       TALLOC_CTX *mem_ctx = talloc_stackframe();
+       TDB_DATA value;
+       bool ret;
+
+       value = regdb_fetch_key_internal(key, mem_ctx);
+       ret = (value.dptr != NULL);
+
+       TALLOC_FREE(mem_ctx);
+       return ret;
+}
+
+
 /***********************************************************************
  Retrieve an array of strings containing subkeys.  Memory should be
  released by the caller.