From 428c652d365b8571ea8b93bfca9e505f5ff14251 Mon Sep 17 00:00:00 2001 From: Arun Date: Sun, 15 Jan 2023 10:59:36 +0530 Subject: [PATCH] Concatenate arguments to pass to `sh` Co-authored-by: KlzXS Co-authored-by: Arun Prakash Jana --- src/nnn.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/nnn.c b/src/nnn.c index 4b2d0a3d..c70392bb 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -4490,12 +4490,29 @@ static bool get_output(char *file, char *arg1, char *arg2, int fdout, bool page) pid = fork(); if (pid == 0) { /* In child */ + char *bufptr = file; + close(cmd_in_fd); dup2(cmd_out_fd, STDOUT_FILENO); dup2(cmd_out_fd, STDERR_FILENO); close(cmd_out_fd); - spawn(utils[UTIL_SH_EXEC], file, arg1, arg2, F_MULTI); + if (bufptr && arg1) { + char argbuf[CMD_LEN_MAX]; + + len = xstrsncpy(argbuf, file, xstrlen(file) + 1); + argbuf[len - 1] = ' '; + bufptr = argbuf + len; + len = xstrsncpy(bufptr, arg1, xstrlen(arg1) + 1); + if (arg2) { + bufptr[len - 1] = ' '; + xstrsncpy(bufptr + len, arg2, xstrlen(arg2) + 1); + } + + bufptr = argbuf; + } + + spawn(utils[UTIL_SH_EXEC], bufptr, NULL, NULL, F_MULTI); _exit(EXIT_SUCCESS); }