From: NRK Date: Wed, 24 Nov 2021 16:06:05 +0000 (+0600) Subject: use a macro for the format string X-Git-Tag: v4.5~54^2~1 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=578e6d1aaa00b8f051d65fc5617400529e7bd52c;p=nnn.git 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. --- diff --git a/src/nnn.c b/src/nnn.c index bd342362..c6001abe 100644 --- 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) {