From 8e21d223f7c5dc00e64646f98efb15131edd9027 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Thu, 8 May 2008 00:34:35 +0200 Subject: registry: add a function regdb_key_is_base_key() to check whether is composite. This partly duplicates code from regdb_key_exists(). Maybe refactor later. Michael (This used to be commit c27d03bba842ecf99f23b22dc40fa7df33392fa0) --- source3/registry/reg_backend_db.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'source3') diff --git a/source3/registry/reg_backend_db.c b/source3/registry/reg_backend_db.c index 3089c43eba..9468c40cf7 100644 --- a/source3/registry/reg_backend_db.c +++ b/source3/registry/reg_backend_db.c @@ -28,6 +28,7 @@ static struct db_context *regdb = NULL; static int regdb_refcount; static bool regdb_key_exists(const char *key); +static bool regdb_key_is_base_key(const char *key); /* List the deepest path into the registry. All part components will be created.*/ @@ -770,6 +771,38 @@ static TDB_DATA regdb_fetch_key_internal(TALLOC_CTX *mem_ctx, const char *key) } +/** + * check whether a given key name represents a base key, + * i.e one without a subkey separator ('/' or '\'). + */ +static bool regdb_key_is_base_key(const char *key) +{ + TALLOC_CTX *mem_ctx = talloc_stackframe(); + bool ret = false; + char *path; + + if (key == NULL) { + goto done; + } + + path = normalize_reg_path(mem_ctx, key); + if (path == NULL) { + DEBUG(0, ("out of memory! (talloc failed)\n")); + goto done; + } + + if (*path == '\0') { + goto done; + } + + ret = (strrchr(path, '/') == NULL); + +done: + TALLOC_FREE(mem_ctx); + return ret; +} + + /** * Check for the existence of a key. * -- cgit