Registry tool "regtree": Handle the default attribute in the right way
authorMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Fri, 12 Sep 2008 14:41:49 +0000 (16:41 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 21 Sep 2008 21:17:58 +0000 (23:17 +0200)
This commit introduces the default attribute in "regtree"

source4/lib/registry/tools/regtree.c

index 19e4a010b4319a3ed5a0655d53633c0b50e9c393..fef9c7ee490f83d141a111967191b285879449f5 100644 (file)
@@ -40,8 +40,8 @@ static void print_tree(int level, struct registry_key *p,
        struct registry_key *subkey;
        const char *valuename;
        const char *keyname;
-       uint32_t value_type;
-       DATA_BLOB value_data;
+       uint32_t valuetype;
+       DATA_BLOB valuedata;
        struct security_descriptor *sec_desc;
        WERROR error;
        int i;
@@ -73,18 +73,24 @@ static void print_tree(int level, struct registry_key *p,
 
        if (!novals) {
                mem_ctx = talloc_init("print_tree");
-               for(i = 0; W_ERROR_IS_OK(error = reg_key_get_value_by_index(mem_ctx,
-                                                                           p,
-                                                                           i,
-                                                                           &valuename,
-                                                                           &value_type,
-                                                                           &value_data)); i++) {
+               /* default value */
+               if (W_ERROR_IS_OK(reg_key_get_value_by_index(mem_ctx, p, 0,
+                       &valuename, &valuetype, &valuedata))) {
                        int j;
-                       char *desc;
                        for(j = 0; j < level+1; j++) putchar(' ');
-                       desc = reg_val_description(mem_ctx, lp_iconv_convenience(cmdline_lp_ctx), valuename,
-                                                  value_type, value_data);
-                       printf("%s\n", desc);
+                       printf("%s\n",  reg_val_description(mem_ctx,
+                               lp_iconv_convenience(cmdline_lp_ctx),
+                               "(Default)", valuetype, valuedata));
+               }
+               /* other values */
+               for(i = 1; W_ERROR_IS_OK(error = reg_key_get_value_by_index(
+                       mem_ctx, p, i, &valuename, &valuetype, &valuedata));
+                       i++) {
+                       int j;
+                       for(j = 0; j < level+1; j++) putchar(' ');
+                       printf("%s\n",  reg_val_description(mem_ctx,
+                               lp_iconv_convenience(cmdline_lp_ctx), valuename,
+                               valuetype, valuedata));
                }
                talloc_free(mem_ctx);