aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-07-09 20:25:39 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-07-09 20:25:39 +0530
commit1d8a14c6b434d00dfb95e68094d8d7d31cdbe2bb (patch)
treed834c5a4bcc21777cf7f33039b6d829e7eef2eb7 /src
parent53bbcbc223f013c531a2b3ea7bb7b4cb2e3df182 (diff)
downloadnnn-1d8a14c6b434d00dfb95e68094d8d7d31cdbe2bb.tar.gz
Fix #675
Diffstat (limited to 'src')
-rw-r--r--src/nnn.c29
1 files changed, 23 insertions, 6 deletions
diff --git a/src/nnn.c b/src/nnn.c
index e23a5a8..b4c5335 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -902,7 +902,11 @@ static char confirm_force(bool selection)
snprintf(str, 32, messages[MSG_FORCE_RM],
(selection ? xitoa(nselected) : "current"), (selection ? "(s)" : ""));
- if (xconfirm(get_input(str)))
+ int r = get_input(str);
+
+ if (r == 27)
+ return '\0'; /* cancel */
+ if (r == 'y' || r == 'Y')
return 'f'; /* forceful */
return 'i'; /* interactive */
}
@@ -1806,13 +1810,21 @@ static void opstr(char *buf, char *op)
op, selpath);
}
-static void rmmulstr(char *buf)
+static bool rmmulstr(char *buf)
{
if (g_state.trash)
snprintf(buf, CMD_LEN_MAX, "xargs -0 trash-put < %s", selpath);
- else
+ else {
+ char r = confirm_force(TRUE);
+
+ if (!r)
+ return FALSE;
+
snprintf(buf, CMD_LEN_MAX, "xargs -0 sh -c 'rm -%cr \"$0\" \"$@\" < /dev/tty' < %s",
- confirm_force(TRUE), selpath);
+ r, selpath);
+ }
+
+ return TRUE;
}
/* Returns TRUE if file is removed, else FALSE */
@@ -1824,6 +1836,9 @@ static bool xrm(char *fpath)
char rm_opts[] = "-ir";
rm_opts[1] = confirm_force(FALSE);
+ if (!rm_opts[1])
+ return FALSE;
+
spawn("rm", rm_opts, fpath, F_NORMAL | F_CHKRTN);
}
@@ -1922,8 +1937,10 @@ static bool cpmvrm_selection(enum action sel, char *path)
}
break;
default: /* SEL_RM */
- rmmulstr(g_buf);
- break;
+ if (!rmmulstr(g_buf)) {
+ printmsg(messages[MSG_CANCEL]);
+ return FALSE;
+ }
}
if (sel != SEL_CPMVAS && spawn(utils[UTIL_SH_EXEC], g_buf, NULL, F_CLI | F_CHKRTN)) {