diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2009-04-23 06:41:51 +1000 |
---|---|---|
committer | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2009-04-23 06:41:51 +1000 |
commit | 0d9e54f7691bbfe8ca41c8f2fb899a1b4786d627 (patch) | |
tree | 4754ddd4433d7acac32f39b9a1230eace7a6d0ba /shell | |
parent | 4dee81871d8ec57f554d969b00ff80ad404fac4e (diff) | |
download | busybox-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.c | 19 |
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 | |||
849 | forkshell_init(struct forkshell *fs) | 849 | forkshell_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); |