diff --git a/src/nnn.c b/src/nnn.c index d939eb6f..5ece4d0d 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -1915,14 +1915,18 @@ finish: static void get_archive_cmd(char *cmd, char *archive) { + uchar i = 3; + const char *arcmd[] = {"atool -a", "bsdtar -acvf", "zip -r", "tar -acvf"}; + if (getutil(utils[UTIL_ATOOL])) - xstrlcpy(cmd, "atool -a", ARCHIVE_CMD_LEN); + i = 0; else if (getutil(utils[UTIL_BSDTAR])) - xstrlcpy(cmd, "bsdtar -acvf", ARCHIVE_CMD_LEN); + i = 1; else if (is_suffix(archive, ".zip")) - xstrlcpy(cmd, "zip -r", ARCHIVE_CMD_LEN); - else - xstrlcpy(cmd, "tar -acvf", ARCHIVE_CMD_LEN); + i = 2; + // else tar + + xstrlcpy(cmd, arcmd[i], ARCHIVE_CMD_LEN); } static void archive_selection(const char *cmd, const char *archive, const char *curpath)