s3:net: add subcommand net registry deletekey_recursive
authorMichael Adam <obnox@samba.org>
Wed, 22 Sep 2010 04:27:49 +0000 (06:27 +0200)
committerMichael Adam <obnox@samba.org>
Wed, 22 Sep 2010 04:30:01 +0000 (06:30 +0200)
to delete a key including subkeys

source3/utils/net_registry.c

index 6021fa08e113b6c24665ec2c6d3623ed348d2f25..7ea68f11262bc791a78d4e3e28bdf7a9254134f1 100644 (file)
@@ -240,8 +240,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;
@@ -271,7 +272,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 %s: %s\n", _("failed"),
                          win_errstr(werr));
@@ -285,6 +290,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)
 {
@@ -1123,6 +1140,14 @@ int net_registry(struct net_context *c, int argc, const char **argv)
                        N_("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,