]> Sergey Matveev's repositories - nnn.git/commitdiff
Modularize cp, mv, rm
authorArun Prakash Jana <engineerarun@gmail.com>
Sat, 2 Mar 2019 09:39:00 +0000 (15:09 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 2 Mar 2019 09:39:00 +0000 (15:09 +0530)
src/nnn.c

index fdf3d6786e0bcadee3c7d3279995e78db326645e..4038c6fc4ab2cac06ad7bb9a9cbd93f1509407a2 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -1142,6 +1142,44 @@ static bool createdir(const char *path, mode_t mode)
        return FALSE;
 }
 
+static void cpstr(char *buf)
+{
+       snprintf(buf, CMD_LEN_MAX,
+#ifdef __linux__
+                "xargs -0 -a %s -%c src %s src .", g_cppath, REPLACE_STR, cp);
+#else
+                "cat %s | xargs -0 -o -%c src cp -iRp src .", g_cppath, REPLACE_STR);
+#endif
+}
+
+static void mvstr(char *buf)
+{
+       snprintf(buf, CMD_LEN_MAX,
+#ifdef __linux__
+                "xargs -0 -a %s -%c src %s src .", g_cppath, REPLACE_STR, mv);
+#else
+                "cat %s | xargs -0 -o -%c src mv -i src .", g_cppath, REPLACE_STR);
+#endif
+}
+
+static void rmmulstr(char *buf)
+{
+       snprintf(buf, CMD_LEN_MAX,
+#ifdef __linux__
+                "xargs -0 -a %s rm -%cr",
+#else
+                "cat %s | xargs -0 -o rm -%cr",
+#endif
+                g_cppath, confirm_force());
+}
+
+static void xrm(char *path)
+{
+       char rm_opts[] = {'-', confirm_force(), 'r'};
+
+       spawn("rm", rm_opts, path, NULL, F_NORMAL | F_SIGINT);
+}
+
 static int digit_compare(const char *a, const char *b)
 {
        while (*a && *b && *a == *b)
@@ -3457,33 +3495,13 @@ nochange:
 
                        switch (sel) {
                        case SEL_CP:
-                               snprintf(g_buf, CMD_LEN_MAX,
-#ifdef __linux__
-                                        "xargs -0 -a %s -%c src %s src .",
-                                        g_cppath, REPLACE_STR, cp);
-#else
-                                        "cat %s | xargs -0 -o -%c src cp -iRp src .",
-                                        g_cppath, REPLACE_STR);
-#endif
+                               cpstr(g_buf);
                                break;
                        case SEL_MV:
-                               snprintf(g_buf, CMD_LEN_MAX,
-#ifdef __linux__
-                                        "xargs -0 -a %s -%c src %s src .",
-                                        g_cppath, REPLACE_STR, mv);
-#else
-                                        "cat %s | xargs -0 -o -%c src mv -i src .",
-                                        g_cppath, REPLACE_STR);
-#endif
+                               mvstr(g_buf);
                                break;
                        default: /* SEL_RMMUL */
-                               snprintf(g_buf, CMD_LEN_MAX,
-#ifdef __linux__
-                                        "xargs -0 -a %s rm -%cr",
-#else
-                                        "cat %s | xargs -0 -o rm -%cr",
-#endif
-                                        g_cppath, confirm_force());
+                               rmmulstr(g_buf);
                                break;
                        }
 
@@ -3500,12 +3518,8 @@ nochange:
                        if (!ndents)
                                break;
 
-                       char rm_opts[] = "-ir";
-
-                       rm_opts[1] = confirm_force();
-
                        mkpath(path, dents[cur].name, newpath);
-                       spawn("rm", rm_opts, newpath, NULL, F_NORMAL | F_SIGINT);
+                       xrm(newpath);
 
                        /* Don't optimize cur if filtering is on */
                        if (!cfg.filtermode && cur && access(newpath, F_OK) == -1)