diff options
| author | 2018-11-11 06:15:18 +0530 | |
|---|---|---|
| committer | 2018-11-11 06:15:18 +0530 | |
| commit | dd1eb788d5a67f938183e1980a5d9a731cc1fde8 (patch) | |
| tree | d3c2d5085a813e122b2ab795653fecdceadfd552 | |
| parent | f41ed544d52e56c4a3abc37e0393d53fa8cc69e2 (diff) | |
| download | nnn-dd1eb788d5a67f938183e1980a5d9a731cc1fde8.tar.gz | |
Support rm current entry
| -rw-r--r-- | src/nnn.c | 21 |
1 files changed, 10 insertions, 11 deletions
@@ -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; |