commit 428c652d365b8571ea8b93bfca9e505f5ff14251
parent 8a1e32d9eb191db2f1b75fda6f15bf6625ecd3fa
Author: Arun <engineerarun@gmail.com>
Date: Sun, 15 Jan 2023 10:59:36 +0530
Concatenate arguments to pass to `sh`
Co-authored-by: KlzXS <klzx+github@klzx.cf>
Co-authored-by: Arun Prakash Jana <engineerarun@gmail.com>
Diffstat:
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git 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);
}