Archive handling on OS X using unar+lsar

This commit is contained in:
Arun Prakash Jana 2017-09-27 21:56:02 +05:30
parent 71d27de517
commit 7c54f073fc
No known key found for this signature in database
GPG Key ID: A75979F35C080412
1 changed files with 29 additions and 2 deletions

31
nnn.c
View File

@ -252,7 +252,12 @@ static char * const utils[] = {
"/usr/bin/xdg-open",
#endif
"nlay",
#ifdef __APPLE__
"unar",
"lsar"
#else
"atool"
#endif
};
/* Common message strings */
@ -1629,6 +1634,21 @@ show_mediainfo(char *fpath, char *arg)
static int
handle_archive(char *fpath, char *arg, char *dir)
{
#ifdef __APPLE__
if (arg[1] == 'x') {
if (!get_output(g_buf, MAX_CMD_LEN, "which", utils[4], NULL, 0))
return -1;
spawn(utils[4], fpath, NULL, dir, F_NORMAL);
} else {
if (!get_output(g_buf, MAX_CMD_LEN, "which", utils[5], NULL, 0))
return -1;
exitcurses();
get_output(NULL, 0, utils[5], fpath, NULL, 1);
initcurses();
}
#else
if (!get_output(g_buf, MAX_CMD_LEN, "which", utils[4], NULL, 0))
return -1;
@ -1639,6 +1659,7 @@ handle_archive(char *fpath, char *arg, char *dir)
get_output(NULL, 0, utils[4], arg, fpath, 1);
initcurses();
}
#endif
return 0;
}
@ -2585,8 +2606,14 @@ nochange:
if (r == -1) {
if (sel == SEL_MEDIA || sel == SEL_FMEDIA)
sprintf(g_buf, "%s missing", utils[cfg.metaviewer]);
else
sprintf(g_buf, "%s missing", utils[4]);
else {
#ifdef __APPLE__
if (sel == SEL_LIST)
sprintf(g_buf, "%s missing", utils[5]);
else
#endif
sprintf(g_buf, "%s missing", utils[4]);
}
printmsg(g_buf);
goto nochange;