diff options
| author | Jelmer Vernooij <jelmer@samba.org> | 2009-12-28 20:37:48 +0100 | 
|---|---|---|
| committer | Jelmer Vernooij <jelmer@ganieda.vernstok.nl> | 2009-12-29 16:26:20 +0100 | 
| commit | 433f58f5a7490ba470dddc55e37325bb73cdba5c (patch) | |
| tree | 3a0f667eaf519bed3a4f18fce6dfcf1d6c5b9fd8 /source4 | |
| parent | e60a40e287a1febdab98cc6cf81a80a8cb6bcfb2 (diff) | |
| download | samba-433f58f5a7490ba470dddc55e37325bb73cdba5c.tar.gz samba-433f58f5a7490ba470dddc55e37325bb73cdba5c.tar.bz2 samba-433f58f5a7490ba470dddc55e37325bb73cdba5c.zip  | |
s4/net: Pass all arguments through to the Python commands.
Diffstat (limited to 'source4')
| -rwxr-xr-x | source4/script/installmisc.sh | 2 | ||||
| -rw-r--r-- | source4/scripting/python/samba/netcmd/__init__.py | 11 | ||||
| -rw-r--r-- | source4/utils/net/net.c | 26 | 
3 files changed, 21 insertions, 18 deletions
diff --git a/source4/script/installmisc.sh b/source4/script/installmisc.sh index 31ca7e645d..1617ff7948 100755 --- a/source4/script/installmisc.sh +++ b/source4/script/installmisc.sh @@ -49,7 +49,7 @@ cp setup/ad-schema/*.txt $SETUPDIR/ad-schema || exit 1  cp setup/display-specifiers/*.txt $SETUPDIR/display-specifiers || exit 1  echo "Installing sbin scripts from setup/*" -for p in domainlevel enableaccount newuser provision setexpiry setpassword  +for p in enableaccount newuser provision setexpiry setpassword   do  	cp setup/$p $SBINDIR || exit 1  	chmod a+x $SBINDIR/$p diff --git a/source4/scripting/python/samba/netcmd/__init__.py b/source4/scripting/python/samba/netcmd/__init__.py index 5c18d29fc3..cb8fa01fe1 100644 --- a/source4/scripting/python/samba/netcmd/__init__.py +++ b/source4/scripting/python/samba/netcmd/__init__.py @@ -19,6 +19,7 @@  import optparse  from samba import getopt as options, Ldb +import sys  class Option(optparse.Option): @@ -82,7 +83,11 @@ class Command(object):          if len(args) < len(self.takes_args):              self.usage(args)              return -1 -        return self.run(*args, **kwargs) +        try: +            return self.run(*args, **kwargs) +        except CommandError, e: +            print >>sys.stderr, "ERROR: %s" % e +            return -1      def run(self):          """Run the command. This should be overriden by all subclasses.""" @@ -97,11 +102,7 @@ class SuperCommand(Command):      def run(self, subcommand, *args, **kwargs):          if not subcommand in subcommands:              print >>sys.stderr, "ERROR: No such subcommand '%s'" % subcommand -        try:              return subcommands[subcommand].run(*args, **kwargs) -        except CommandError, e: -            print >>sys.stderr, "ERROR: %s" % e.message -            return -1      def usage(self, subcommand=None, *args, **kwargs):          if subcommand is None: diff --git a/source4/utils/net/net.c b/source4/utils/net/net.c index 9725402c7f..7b8f092f93 100644 --- a/source4/utils/net/net.c +++ b/source4/utils/net/net.c @@ -130,7 +130,6 @@ int net_run_function(struct net_context *ctx,  			int (*usage_fn)(struct net_context *ctx, int argc, const char **argv))  {  	int i; -	PyObject *py_cmds, *py_cmd;  	if (argc == 0) {  		return usage_fn(ctx, argc, argv); @@ -144,17 +143,6 @@ int net_run_function(struct net_context *ctx,  			return functable[i].fn(ctx, argc-1, argv+1);  	} -	py_cmds = py_commands(); -	if (py_cmds == NULL) { -		return 1; -	} - -	py_cmd = PyDict_GetItemString(py_cmds, argv[0]); -	if (py_cmd != NULL) { -		return py_call_with_string_args(py_cmd, "_run",  -			argc-1, argv+1); -	} -  	d_printf("No command: %s\n", argv[0]);  	return usage_fn(ctx, argc, argv);  } @@ -288,6 +276,7 @@ static int binary_net(int argc, const char **argv)  	int opt,i;  	int rc;  	int argc_new; +	PyObject *py_cmds, *py_cmd;  	const char **argv_new;  	struct tevent_context *ev;  	struct net_context *ctx = NULL; @@ -352,6 +341,19 @@ static int binary_net(int argc, const char **argv)  	Py_Initialize();  	py_update_path("bin"); /* FIXME: Can't assume this is always the case */ +	py_cmds = py_commands(); +	if (py_cmds == NULL) { +		return 1; +	} + +	py_cmd = PyDict_GetItemString(py_cmds, argv[1]); +	if (py_cmd != NULL) { +		rc = py_call_with_string_args(py_cmd, "_run",  +			argc-2, argv+2); +		talloc_free(ev); +		return rc; +	} +  	rc = net_run_function(ctx, argc_new-1, argv_new+1, net_functable,  			      net_usage);  | 
