aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2018-11-11 06:15:18 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2018-11-11 06:15:18 +0530
commitdd1eb788d5a67f938183e1980a5d9a731cc1fde8 (patch)
treed3c2d5085a813e122b2ab795653fecdceadfd552
parentf41ed544d52e56c4a3abc37e0393d53fa8cc69e2 (diff)
downloadnnn-dd1eb788d5a67f938183e1980a5d9a731cc1fde8.tar.gz
Support rm current entry
-rw-r--r--src/nnn.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/nnn.c b/src/nnn.c
index 89d6d99..8934c8b 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -3078,26 +3078,19 @@ nochange:
case SEL_MV:
case SEL_RMMUL:
{
- char *cmd;
-
if (!g_cppath[0]) {
printmsg("copy file not found");
goto nochange;
}
if (sel == SEL_CP)
- r = asprintf(&cmd, "xargs -0 -d \'\n\' -a %s cp -ir --preserve=all -t .", g_cppath);
+ snprintf(g_buf, MAX_CMD_LEN, "xargs -0 -d \'\n\' -a %s cp -ir --preserve=all -t .", g_cppath);
else if (sel == SEL_MV)
- r = asprintf(&cmd, "xargs -0 -d \'\n\' -a %s mv -i -t .", g_cppath);
+ snprintf(g_buf, MAX_CMD_LEN, "xargs -0 -d \'\n\' -a %s mv -i -t .", g_cppath);
else /* SEL_RMMUL */
- r = asprintf(&cmd, "xargs -0 -d \'\n\' -a %s rm -Ir", g_cppath);
+ snprintf(g_buf, MAX_CMD_LEN, "xargs -0 -d \'\n\' -a %s rm -Ir", g_cppath);
- if (r == -1) {
- printwarn();
- goto nochange;
- }
- spawn("sh", "-c", cmd, path, F_NORMAL | F_SIGINT);
- free(cmd);
+ spawn("sh", "-c", g_buf, path, F_NORMAL | F_SIGINT);
copycurname();
if (cfg.filtermode)
@@ -3105,6 +3098,12 @@ nochange:
goto begin;
}
case SEL_RM:
+ if (!ndents)
+ break;
+
+ mkpath(path, dents[cur].name, newpath, PATH_MAX);
+ spawn("rm", "-Ir", newpath, NULL, F_NORMAL | F_SIGINT);
+
lastname[0] = '\0';
if (cfg.filtermode)
presel = FILTER;