aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nnn.110
-rwxr-xr-xscripts/copier/copier.sh4
-rw-r--r--src/nnn.c10
3 files changed, 10 insertions, 14 deletions
diff --git a/nnn.1 b/nnn.1
index 998529c..6886211 100644
--- a/nnn.1
+++ b/nnn.1
@@ -283,15 +283,13 @@ files.
.Pp
\fBNNN_COPIER:\fR set to a clipboard copier script. For example, on Linux:
.Bd -literal
- -------------------------------------
+ -----------------------------------------
#!/bin/sh
- # comment the next line to convert newlines to spaces
- IFS=
- echo -n $1 | xsel --clipboard --input
- -------------------------------------
+ cat /path/to/.nnncp | xargs -0 | xsel -bi
+ -----------------------------------------
- If it's not set, by default file paths are copied to the tmp file \fBDIR/.nnncp\fR, where 'DIR' (by priority) is: \fI$HOME\fR or, \fI$TMPDIR\fR or, \fI/tmp\fR.
+ Note: By default file paths are copied to the tmp file \fBDIR/.nnncp\fR, where 'DIR' (by priority) is: \fI$HOME\fR or, \fI$TMPDIR\fR or, \fI/tmp\fR.
.Ed
.Pp
\fBNNN_SCRIPT:\fR path to a custom script to invoke with currently selected file name as argument 1.
diff --git a/scripts/copier/copier.sh b/scripts/copier/copier.sh
index 5629301..0f5a195 100755
--- a/scripts/copier/copier.sh
+++ b/scripts/copier/copier.sh
@@ -1,5 +1,3 @@
#!/bin/sh
-# comment the next line to convert newlines to spaces
-IFS=
-echo -n $1 | `xsel --clipboard --input`
+cat /path/to/.nnncp | xargs -0 | xsel -bi
diff --git a/src/nnn.c b/src/nnn.c
index d48ce6e..c673c55 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -3008,7 +3008,7 @@ nochange:
writecp(newpath, r - 1); /* Truncate NULL from end */
if (copier)
- spawn(copier, newpath, NULL, NULL, F_NOTRACE);
+ spawn(copier, NULL, NULL, NULL, F_NOTRACE);
}
printmsg(newpath);
goto nochange;
@@ -3047,7 +3047,7 @@ nochange:
if (copybufpos) { /* File path(s) written to the buffer */
writecp(pcopybuf, copybufpos - 1); /* Truncate NULL from end */
if (copier)
- spawn(copier, pcopybuf, NULL, NULL, F_NOTRACE);
+ spawn(copier, NULL, NULL, NULL, F_NOTRACE);
if (ncp) { /* Some files cherry picked */
snprintf(newpath, PATH_MAX, "%d files copied", ncp);
@@ -3085,11 +3085,11 @@ nochange:
}
if (sel == SEL_CP)
- snprintf(g_buf, MAX_CMD_LEN, "cat %s | xargs -0 cp -ir --preserve=all -t .", g_cppath);
+ snprintf(g_buf, MAX_CMD_LEN, "xargs -0 -a %s cp -ir --preserve=all -t .", g_cppath);
else if (sel == SEL_MV)
- snprintf(g_buf, MAX_CMD_LEN, "cat %s | xargs -0 mv -i -t .", g_cppath);
+ snprintf(g_buf, MAX_CMD_LEN, "xargs -0 -a %s mv -i -t .", g_cppath);
else /* SEL_RMMUL */
- snprintf(g_buf, MAX_CMD_LEN, "cat %s | xargs -0 rm -Ir", g_cppath);
+ snprintf(g_buf, MAX_CMD_LEN, "xargs -0 -a %s rm -Ir", g_cppath);
spawn("sh", "-c", g_buf, path, F_NORMAL | F_SIGINT);