Now that we have the use_shell feature, these callsites can all be converted with small changes. Signed-off-by: Jeff King <peff@xxxxxxxx> --- These should be non-controversial. convert.c | 3 ++- imap-send.c | 8 ++------ ll-merge.c | 6 +++--- pager.c | 5 +++-- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/convert.c b/convert.c index 491e714..950b1f9 100644 --- a/convert.c +++ b/convert.c @@ -249,10 +249,11 @@ static int filter_buffer(int fd, void *data) struct child_process child_process; struct filter_params *params = (struct filter_params *)data; int write_err, status; - const char *argv[] = { "sh", "-c", params->cmd, NULL }; + const char *argv[] = { params->cmd, NULL }; memset(&child_process, 0, sizeof(child_process)); child_process.argv = argv; + child_process.use_shell = 1; child_process.in = -1; child_process.out = fd; diff --git a/imap-send.c b/imap-send.c index de8114b..51f371b 100644 --- a/imap-send.c +++ b/imap-send.c @@ -965,17 +965,13 @@ static struct store *imap_open_store(struct imap_server_conf *srvc) /* open connection to IMAP server */ if (srvc->tunnel) { - const char *argv[4]; + const char *argv[] = { srvc->tunnel, NULL }; struct child_process tunnel = {0}; imap_info("Starting tunnel '%s'... ", srvc->tunnel); - argv[0] = "sh"; - argv[1] = "-c"; - argv[2] = srvc->tunnel; - argv[3] = NULL; - tunnel.argv = argv; + tunnel.use_shell = 1; tunnel.in = -1; tunnel.out = -1; if (start_command(&tunnel)) diff --git a/ll-merge.c b/ll-merge.c index 2d6b6d6..18511e2 100644 --- a/ll-merge.c +++ b/ll-merge.c @@ -175,7 +175,7 @@ static int ll_ext_merge(const struct ll_merge_driver *fn, { "B", temp[2] }, { NULL } }; - const char *args[] = { "sh", "-c", NULL, NULL }; + const char *args[] = { NULL, NULL }; int status, fd, i; struct stat st; @@ -190,8 +190,8 @@ static int ll_ext_merge(const struct ll_merge_driver *fn, strbuf_expand(&cmd, fn->cmdline, strbuf_expand_dict_cb, &dict); - args[2] = cmd.buf; - status = run_command_v_opt(args, 0); + args[0] = cmd.buf; + status = run_command_v_opt(args, RUN_USING_SHELL); fd = open(temp[1], O_RDONLY); if (fd < 0) goto bad; diff --git a/pager.c b/pager.c index 92c03f6..2c7e8ec 100644 --- a/pager.c +++ b/pager.c @@ -28,7 +28,7 @@ static void pager_preexec(void) } #endif -static const char *pager_argv[] = { "sh", "-c", NULL, NULL }; +static const char *pager_argv[] = { NULL, NULL }; static struct child_process pager_process; static void wait_for_pager(void) @@ -81,7 +81,8 @@ void setup_pager(void) spawned_pager = 1; /* means we are emitting to terminal */ /* spawn the pager */ - pager_argv[2] = pager; + pager_argv[0] = pager; + pager_process.use_shell = 1; pager_process.argv = pager_argv; pager_process.in = -1; if (!getenv("LESS")) { -- 1.6.6.65.g050d2.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html