From 880f1c637dac24d41a74f9e6308ced573d01e117 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Tue, 23 Oct 2007 18:22:59 +0200 Subject: [PATCH] Parse arguments rather than forking out a shell --- bin/sugar-launch | 5 +---- lib/sugar/activity/activityfactory.py | 17 +++++++++-------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/bin/sugar-launch b/bin/sugar-launch index e40ebab4..501b289e 100644 --- a/bin/sugar-launch +++ b/bin/sugar-launch @@ -40,8 +40,7 @@ if len(activities) == 0: print 'Activity not found.' activity = activities[0] -cmd_args = activityfactory.get_command(activity).split(' ') -print cmd_args +cmd_args = activityfactory.get_command(activity) def _get_interpreter(exec_file): if os.path.exists(exec_file): @@ -66,7 +65,5 @@ if options.debug: cmd_args.extend(_get_interpreter(act_args.pop(0))) cmd_args.extend(act_args) -print cmd_args - os.execvpe(cmd_args[0], cmd_args, activityfactory.get_environment(activity)) diff --git a/lib/sugar/activity/activityfactory.py b/lib/sugar/activity/activityfactory.py index ae08adaa..e6550159 100644 --- a/lib/sugar/activity/activityfactory.py +++ b/lib/sugar/activity/activityfactory.py @@ -88,14 +88,16 @@ def get_command(activity, activity_id=None, object_id=None, uri=None): if not activity_id: activity_id = create_activity_id() - command = activity.command - command += ' -b %s' % activity.bundle_id - command += ' -a %s' % activity_id + command = activity.command.split(' ') + command.extend(['-b', activity.bundle_id]) + command.extend(['-a', activity_id]) if object_id is not None: - command += ' -o %s' % object_id + command.extend(['-o', object_id]) if uri is not None: - command += ' -u %s' % uri + command.extend(['-u', uri]) + + print command return command @@ -184,9 +186,8 @@ class ActivityCreationHandler(gobject.GObject): command = get_command(activity, self._handle.activity_id, self._handle.object_id, self._handle.uri) - process = subprocess.Popen(command, env=env, shell=True, - cwd=activity.path, stdout=log_file, - stderr=log_file) + process = subprocess.Popen(command, env=env, cwd=activity.path, + stdout=log_file, stderr=log_file) else: system_bus = dbus.SystemBus() factory = system_bus.get_object(_RAINBOW_SERVICE_NAME,