s4/net: Allow options before arguments for Python commands.
authorJelmer Vernooij <jelmer@samba.org>
Mon, 28 Dec 2009 20:07:25 +0000 (21:07 +0100)
committerJelmer Vernooij <jelmer@ganieda.vernstok.nl>
Tue, 29 Dec 2009 15:26:20 +0000 (16:26 +0100)
source4/scripting/python/samba/netcmd/__init__.py
source4/utils/net/net.c

index cb8fa01fe1f7f0f4e69b98eb9d8839b8e1d813fe..1a04210f950970f997ebe1396658db8010753807 100644 (file)
@@ -75,12 +75,13 @@ class Command(object):
         parser, optiongroups = self._create_parser()
         opts, args = parser.parse_args(list(argv))
         # Filter out options from option groups
+        args = args[1:]
         kwargs = dict(opts.__dict__)
         for option_group in parser.option_groups:
             for option in option_group.option_list:
                 del kwargs[option.dest]
         kwargs.update(optiongroups)
-        if len(args) < len(self.takes_args):
+        if len(args) != len(self.takes_args):
             self.usage(args)
             return -1
         try:
index 7b8f092f93844c3ef94d27547ecb74b5a970255f..f761ef4050a50edf52c68e9268843e1513e91ffc 100644 (file)
@@ -346,10 +346,10 @@ static int binary_net(int argc, const char **argv)
                return 1;
        }
 
-       py_cmd = PyDict_GetItemString(py_cmds, argv[1]);
+       py_cmd = PyDict_GetItemString(py_cmds, argv_new[1]);
        if (py_cmd != NULL) {
                rc = py_call_with_string_args(py_cmd, "_run", 
-                       argc-2, argv+2);
+                       argc-1, argv+1);
                talloc_free(ev);
                return rc;
        }