]> Sergey Matveev's repositories - nnn.git/commitdiff
cp, mv: use replacement string with xargs
authorArun Prakash Jana <engineerarun@gmail.com>
Wed, 28 Nov 2018 00:27:27 +0000 (05:57 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Wed, 28 Nov 2018 00:27:27 +0000 (05:57 +0530)
src/nnn.c

index 7a0ac90505ed486ddb3a9bedc1d339e0f6d74324..93d4c3212b9500ac636a1b270410373a13dedad7 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -322,6 +322,15 @@ static uint KQUEUE_FFLAGS = NOTE_DELETE | NOTE_EXTEND | NOTE_LINK | NOTE_RENAME
 static struct timespec gtimeout;
 #endif
 
+/* Replace-str for xargs on different platforms */
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__APPLE__)
+#define REPLACE_STR 'J'
+#elif defined(__linux__) || defined(__CYGWIN__)
+#define REPLACE_STR 'I'
+#else
+#define REPLACE_STR 'I'
+#endif
+
 /* Macros for utilities */
 #define MEDIAINFO 0
 #define EXIFTOOL 1
@@ -3083,9 +3092,9 @@ nochange:
                        }
 
                        if (sel == SEL_CP)
-                               snprintf(g_buf, MAX_CMD_LEN, "cat %s | xargs -0 -o cp -iRp -t .", g_cppath);
+                               snprintf(g_buf, MAX_CMD_LEN, "cat %s | xargs -0 -o -%c src cp -iRp src .", g_cppath, REPLACE_STR);
                        else if (sel == SEL_MV)
-                               snprintf(g_buf, MAX_CMD_LEN, "cat %s | xargs -0 -o mv -i -t .", g_cppath);
+                               snprintf(g_buf, MAX_CMD_LEN, "cat %s | xargs -0 -o -%c src mv -i src .", g_cppath, REPLACE_STR);
                        else /* SEL_RMMUL */
                                snprintf(g_buf, MAX_CMD_LEN, "cat %s | xargs -0 -o rm -ir", g_cppath);