Support archiving files in selection

This commit is contained in:
Arun Prakash Jana 2019-01-31 06:59:57 +05:30
parent 2324e8e3e7
commit d9977c5ea1
No known key found for this signature in database
GPG Key ID: A75979F35C080412
3 changed files with 20 additions and 6 deletions

View File

@ -236,7 +236,7 @@ Press <kbd>?</kbd> in `nnn` to see the list anytime.
Y Select all
P Copy selection X Delete selection
V Move selection ^X Delete entry
f Archive entry F List archive
f Archive files F List archive
^F Extract archive m M Brief/full media info
e Edit in EDITOR p Open in PAGER
ORDER TOGGLES

2
nnn.1
View File

@ -113,7 +113,7 @@ Delete files from selection
.It Ic ^X
Delete entry
.It Ic f
Archive entry
Archive files
.It Ic F
List files in archive
.It Ic ^F

View File

@ -2300,7 +2300,7 @@ static bool show_help(char *path)
"cY Select all\n"
"cP Copy selection X Delete selection\n"
"cV Move selection ^X Delete entry\n"
"cf Archive entry F List archive\n"
"cf Archive files F List archive\n"
"b^F Extract archive m M Brief/full media info\n"
"ce Edit in EDITOR p Open in PAGER\n"
"1ORDER TOGGLES\n"
@ -3512,7 +3512,7 @@ nochange:
{
switch (sel) {
case SEL_ARCHIVE:
tmp = xreadline(dents[cur].name, "name: ");
tmp = xreadline(NULL, "archive name: ");
break;
case SEL_OPENWITH:
tmp = xreadline(NULL, "open with: ");
@ -3545,10 +3545,24 @@ nochange:
/* newpath is used as temporary buffer */
if (!getutil(utils[APACK])) {
printmsg("utility missing");
continue;
goto nochange;
}
spawn(utils[APACK], tmp, dents[cur].name, path, F_NORMAL);
r = get_input("archive selection (else current)? [s]");
if (r == 's') {
if (!cpsafe())
goto nochange;
snprintf(g_buf, CMD_LEN_MAX,
#ifdef __linux__
"xargs -0 -a %s %s %s",
#else
"cat %s | xargs -0 -o %s %s",
#endif
g_cppath, utils[APACK], tmp);
spawn("sh", "-c", g_buf, path, F_NORMAL | F_SIGINT);
} else
spawn(utils[APACK], tmp, dents[cur].name, path, F_NORMAL);
break;
case SEL_OPENWITH:
dir = NULL;