aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2009-04-23 06:41:51 +1000
committerNguyễn Thái Ngọc Duy <pclouds@gmail.com>2009-04-23 06:41:51 +1000
commit0d9e54f7691bbfe8ca41c8f2fb899a1b4786d627 (patch)
tree4754ddd4433d7acac32f39b9a1230eace7a6d0ba /shell
parent4dee81871d8ec57f554d969b00ff80ad404fac4e (diff)
downloadbusybox-w32-0d9e54f7691bbfe8ca41c8f2fb899a1b4786d627.tar.gz
busybox-w32-0d9e54f7691bbfe8ca41c8f2fb899a1b4786d627.tar.bz2
busybox-w32-0d9e54f7691bbfe8ca41c8f2fb899a1b4786d627.zip
run-command: rework interface to pass program path directly
Diffstat (limited to 'shell')
-rw-r--r--shell/ash_mingw.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/shell/ash_mingw.c b/shell/ash_mingw.c
index 57679e7ee..e79fe6124 100644
--- a/shell/ash_mingw.c
+++ b/shell/ash_mingw.c
@@ -849,7 +849,7 @@ static int
849forkshell_init(struct forkshell *fs) 849forkshell_init(struct forkshell *fs)
850{ 850{
851 static char argv2[32]; 851 static char argv2[32];
852 static const char *argv[4] = { NULL, "sh", argv2, NULL }; 852 static const char *argv[4] = { "sh", argv2, NULL };
853 int p[2]; 853 int p[2];
854 854
855 if (_pipe(p, 0, 0) < 0) 855 if (_pipe(p, 0, 0) < 0)
@@ -862,7 +862,7 @@ forkshell_init(struct forkshell *fs)
862 */ 862 */
863 sprintf(argv2, "subash%lx:%s", _get_osfhandle(p[0]), fs->fp); 863 sprintf(argv2, "subash%lx:%s", _get_osfhandle(p[0]), fs->fp);
864 864
865 argv[0] = CONFIG_BUSYBOX_EXEC_PATH; 865 fs->cmd.cmd = CONFIG_BUSYBOX_EXEC_PATH;
866 fs->cmd.argv = argv; 866 fs->cmd.argv = argv;
867 fs->fd = p[1]; 867 fs->fd = p[1];
868 return 0; 868 return 0;
@@ -959,18 +959,12 @@ tryspawn(const char *cmd, const char **argv, const char * const*envp)
959 959
960 a = find_applet_by_name(cmd); 960 a = find_applet_by_name(cmd);
961 if (a) { 961 if (a) {
962 const char **new_argv;
963 const char **argp;
964 int retval; 962 int retval;
965 963
966 for (argp = argv;*argp;argp++); 964 cp.cmd = CONFIG_BUSYBOX_EXEC_PATH;
967 new_argv = xmalloc(sizeof(const char *)*(argp - argv + 2)); 965 cp.argv = argv;
968 new_argv[0] = CONFIG_BUSYBOX_EXEC_PATH; 966 trace_argv_printf(argv, "git-box: applet:");
969 memcpy(&new_argv[1], &argv[0], (argp - argv + 1)*sizeof(const char*)); 967 retval = set_exitstatus(run_command(&cp), argv, NULL);
970 cp.argv = new_argv;
971 trace_argv_printf(new_argv, "git-box: applet:");
972 retval = set_exitstatus(run_command(&cp), new_argv, NULL);
973 free(new_argv);
974 return retval; 968 return retval;
975 } 969 }
976 } 970 }
@@ -979,6 +973,7 @@ tryspawn(const char *cmd, const char **argv, const char * const*envp)
979 /* FIXME 973 /* FIXME
980 * Need to copy vartab atab cmdtable localvars to the subshell 974 * Need to copy vartab atab cmdtable localvars to the subshell
981 */ 975 */
976 cp.cmd = cmd;
982 cp.argv = argv; 977 cp.argv = argv;
983 trace_argv_printf(argv, "git-box: spawn:"); 978 trace_argv_printf(argv, "git-box: spawn:");
984 return set_exitstatus(run_command(&cp), argv, NULL); 979 return set_exitstatus(run_command(&cp), argv, NULL);