commit 578e6d1aaa00b8f051d65fc5617400529e7bd52c
parent f7091f78e5e068ca4b73b34882ca402d041cb2c6
Author: NRK <nrk@disroot.org>
Date: Wed, 24 Nov 2021 22:06:05 +0600
use a macro for the format string
this makes things slightly more robust as changing the string inside the
macro would automatically change the malloc size.
Diffstat:
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/nnn.c b/src/nnn.c
@@ -2719,10 +2719,10 @@ static void get_archive_cmd(char *cmd, const char *archive)
xstrsncpy(cmd, archive_cmd[i], ARCHIVE_CMD_LEN);
}
+#define CMD_FMT " -ze 's|^%s/||' '%s' | xargs -0 %s %s"
static void archive_selection(const char *cmd, const char *archive, const char *curpath)
{
- /* The 38 comes from the format string below */
- char *buf = malloc((38 + xstrlen(cmd) + xstrlen(archive)
+ char *buf = malloc((sizeof(CMD_FMT) + xstrlen(cmd) + xstrlen(archive)
+ xstrlen(curpath) + xstrlen(selpath)) * sizeof(char));
if (!buf) {
DPRINTF_S(strerror(errno));
@@ -2730,12 +2730,11 @@ static void archive_selection(const char *cmd, const char *archive, const char *
return;
}
- snprintf(buf, CMD_LEN_MAX,
- SED" -ze 's|^%s/||' '%s' | xargs -0 %s %s", curpath, selpath, cmd, archive
- );
+ snprintf(buf, CMD_LEN_MAX, SED CMD_FMT, curpath, selpath, cmd, archive);
spawn(utils[UTIL_SH_EXEC], buf, NULL, NULL, F_CLI | F_CONFIRM);
free(buf);
}
+#undef CMD_FMT
static void write_lastdir(const char *curpath, const char *outfile)
{