]> Sergey Matveev's repositories - nnn.git/commitdiff
Support rm current entry
authorArun Prakash Jana <engineerarun@gmail.com>
Sun, 11 Nov 2018 00:45:18 +0000 (06:15 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sun, 11 Nov 2018 00:45:18 +0000 (06:15 +0530)
src/nnn.c

index 89d6d99e1df3a3cecf209066b861f19842ec941c..8934c8be5ef43a600c5fed1397506c49123a4cfb 100644 (file)
--- 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;