s3:net: add subcommand net registry deletekey_recursive
authorMichael Adam <obnox@samba.org>
Wed, 22 Sep 2010 04:27:49 +0000 (06:27 +0200)
committerVolker Lendecke <vl@samba.org>
Mon, 31 Jan 2011 10:57:51 +0000 (11:57 +0100)
to delete a key including subkeys

source3/utils/net_registry.c

index f0db17a8bcd9f805ef1e9afa3aed38923480dcac..c23b2a3ef8e487ef56438cd8c3b46b18c852d6e8 100644 (file)
@@ -226,8 +226,9 @@ done:
        return ret;
 }
 
-static int net_registry_deletekey(struct net_context *c, int argc,
-                                 const char **argv)
+static int net_registry_deletekey_internal(struct net_context *c, int argc,
+                                          const char **argv,
+                                          bool recursive)
 {
        WERROR werr;
        char *subkeyname;
@@ -252,7 +253,11 @@ static int net_registry_deletekey(struct net_context *c, int argc,
                goto done;
        }
 
-       werr = reg_deletekey(hivekey, subkeyname);
+       if (recursive) {
+               werr = reg_deletekey_recursive(hivekey, subkeyname);
+       } else {
+               werr = reg_deletekey(hivekey, subkeyname);
+       }
        if (!W_ERROR_IS_OK(werr)) {
                d_fprintf(stderr, "reg_deletekey failed: %s\n",
                          win_errstr(werr));
@@ -266,6 +271,18 @@ done:
        return ret;
 }
 
+static int net_registry_deletekey(struct net_context *c, int argc,
+                                 const char **argv)
+{
+       return net_registry_deletekey_internal(c, argc, argv, false);
+}
+
+static int net_registry_deletekey_recursive(struct net_context *c, int argc,
+                                           const char **argv)
+{
+       return net_registry_deletekey_internal(c, argc, argv, true);
+}
+
 static int net_registry_getvalue_internal(struct net_context *c, int argc,
                                          const char **argv, bool raw)
 {
@@ -1105,6 +1122,14 @@ int net_registry(struct net_context *c, int argc, const char **argv)
                        "net registry deletekey\n"
                        "    Delete a registry key"
                },
+               {
+                       "deletekey_recursive",
+                       net_registry_deletekey_recursive,
+                       NET_TRANSPORT_LOCAL,
+                       N_("Delete a registry key with subkeys"),
+                       N_("net registry deletekey_recursive\n"
+                          "    Delete a registry key with subkeys")
+               },
                {
                        "getvalue",
                        net_registry_getvalue,