r15361: Export table of predefined registry keys
authorJelmer Vernooij <jelmer@samba.org>
Sun, 30 Apr 2006 16:09:00 +0000 (16:09 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:05:26 +0000 (14:05 -0500)
(This used to be commit 684ef2dae1145388308502942da15e59a8beb425)

source4/lib/registry/common/reg_interface.c
source4/lib/registry/registry.h
source4/lib/registry/tools/regtree.c

index 42535d835d0fea4fed443ddcd91f75457fc5bc3c..7d65d31d0f87271b0ae2e091a80e62703abca337 100644 (file)
@@ -34,7 +34,7 @@ static struct reg_init_function_entry *backends = NULL;
 static struct reg_init_function_entry *reg_find_backend_entry(const char *name);
 
 /** Register a new backend. */
-_PUBLIC_ NTSTATUS registry_register(const void *_hive_ops)  
+_PUBLIC_ NTSTATUS registry_register(const void *_hive_ops)
 {
        const struct hive_operations *hive_ops = _hive_ops;
        struct reg_init_function_entry *entry = backends;
@@ -90,11 +90,7 @@ _PUBLIC_ BOOL reg_has_backend(const char *backend)
        return reg_find_backend_entry(backend) != NULL?True:False;
 }
 
-static const struct {
-       uint32_t handle;
-       const char *name;
-} predef_names[] = 
-{
+const struct reg_predefined_key reg_predefined_keys[] = {
        {HKEY_CLASSES_ROOT,"HKEY_CLASSES_ROOT" },
        {HKEY_CURRENT_USER,"HKEY_CURRENT_USER" },
        {HKEY_LOCAL_MACHINE, "HKEY_LOCAL_MACHINE" },
@@ -111,12 +107,12 @@ static const struct {
 _PUBLIC_ int reg_list_predefs(TALLOC_CTX *mem_ctx, char ***predefs, uint32_t **hkeys)
 {
        int i;
-       *predefs = talloc_array(mem_ctx, char *, ARRAY_SIZE(predef_names));
-       *hkeys = talloc_array(mem_ctx, uint32_t, ARRAY_SIZE(predef_names));
+       *predefs = talloc_array(mem_ctx, char *, ARRAY_SIZE(reg_predefined_keys));
+       *hkeys = talloc_array(mem_ctx, uint32_t, ARRAY_SIZE(reg_predefined_keys));
 
-       for (i = 0; predef_names[i].name; i++) {
-               (*predefs)[i] = talloc_strdup(mem_ctx, predef_names[i].name);
-               (*hkeys)[i] = predef_names[i].handle;
+       for (i = 0; reg_predefined_keys[i].name; i++) {
+               (*predefs)[i] = talloc_strdup(mem_ctx, reg_predefined_keys[i].name);
+               (*hkeys)[i] = reg_predefined_keys[i].handle;
        }
 
        return i;
@@ -126,8 +122,8 @@ _PUBLIC_ int reg_list_predefs(TALLOC_CTX *mem_ctx, char ***predefs, uint32_t **h
 _PUBLIC_ const char *reg_get_predef_name(uint32_t hkey)
 {
        int i;
-       for (i = 0; predef_names[i].name; i++) {
-               if (predef_names[i].handle == hkey) return predef_names[i].name;
+       for (i = 0; reg_predefined_keys[i].name; i++) {
+               if (reg_predefined_keys[i].handle == hkey) return reg_predefined_keys[i].name;
        }
 
        return NULL;
@@ -138,8 +134,8 @@ _PUBLIC_ WERROR reg_get_predefined_key_by_name(struct registry_context *ctx, con
 {
        int i;
        
-       for (i = 0; predef_names[i].name; i++) {
-               if (!strcasecmp(predef_names[i].name, name)) return reg_get_predefined_key(ctx, predef_names[i].handle, key);
+       for (i = 0; reg_predefined_keys[i].name; i++) {
+               if (!strcasecmp(reg_predefined_keys[i].name, name)) return reg_get_predefined_key(ctx, reg_predefined_keys[i].handle, key);
        }
 
        DEBUG(1, ("No predefined key with name '%s'\n", name));
index 385b0e7d6f92915c250ea434ebeb9ceb9417ff63..80b412a31476c5d18e4cd3bdba7e1cdf4f26dac6 100644 (file)
 #define HKEY_PERFORMANCE_TEXT   0x80000050
 #define HKEY_PERFORMANCE_NLSTEXT 0x80000060
 
+struct reg_predefined_key {
+       uint32_t handle;
+       const char *name;
+};
+
+extern const struct reg_predefined_key reg_predefined_keys[];
+
 #define        REG_DELETE              -1
 
 /*
@@ -145,6 +152,8 @@ struct reg_init_function_entry {
        struct reg_init_function_entry *prev, *next;
 };
 
+/* Representing differences between registry files */
+
 struct reg_diff_value
 {
        char *name;
index 106039361a87a1dde5fc305d3605a1c3b09d7787..b0e1c46d9c7b25c2effa56d443413521b3a094b1 100644 (file)
@@ -125,10 +125,10 @@ int main(int argc, char **argv)
        if (!h) {
                print_tree(0, root, fullpath, no_values);
        } else {
-               for(i = HKEY_CLASSES_ROOT; i < HKEY_PERFORMANCE_NLSTEXT; i++) {
-                       error = reg_get_predefined_key(h, i, &root);
+               for(i = 0; reg_predefined_keys[i].handle; i++) {
+                       error = reg_get_predefined_key(h, reg_predefined_keys[i].handle, &root);
                        if (!W_ERROR_IS_OK(error)) {
-                               fprintf(stderr, "Skipping %s\n", reg_get_predef_name(i));
+                               fprintf(stderr, "Skipping %s\n", reg_predefined_keys[i].name);
                                continue;
                        }
                        print_tree(0, root, fullpath, no_values);