Use distinct (by username) tmp filename to copy file paths. The pattern used is: /tmp/nnncp$USER If username is 'arun', the file name is `/tmp/nnncparun`.master
@@ -385,7 +385,7 @@ This is particularly useful if you are planning to copy the whole string to the | |||||
#### copy file paths when X is missing | #### copy file paths when X is missing | ||||
A very common scenario on headless remote servers connected via SSH. As the clipboard is missing, `nnn` copies the path names to the tmp file `/tmp/nnncp`. | |||||
A very common scenario on headless remote servers connected via SSH. As the clipboard is missing, `nnn` copies the path names to the tmp file `/tmp/nnncp$USER`. | |||||
`nnn` needs to know X is unavailable: | `nnn` needs to know X is unavailable: | ||||
@@ -394,15 +394,15 @@ A very common scenario on headless remote servers connected via SSH. As the clip | |||||
Use <kbd>^Y</kbd> and/or <kbd>^K</kbd> to copy file paths as usual. To use the copied paths from the cmdline, use command substitution: | Use <kbd>^Y</kbd> and/or <kbd>^K</kbd> to copy file paths as usual. To use the copied paths from the cmdline, use command substitution: | ||||
# bash/zsh | # bash/zsh | ||||
ls -ltr `cat /tmp/nnncp` | |||||
ls -ltr $(cat /tmp/nnncp) | |||||
ls -ltr `cat /tmp/nnncpuser` | |||||
ls -ltr $(cat /tmp/nnncpuser) | |||||
# fish | # fish | ||||
ls -ltr (cat /tmp/nnncp) | |||||
ls -ltr (cat /tmp/nnncpuser) | |||||
An alias may be handy: | An alias may be handy: | ||||
alias ncp='cat /tmp/nnncp' | |||||
alias ncp='cat /tmp/nnncpuser' | |||||
so you can - | so you can - | ||||
@@ -248,7 +248,7 @@ screensaver. | |||||
------------------------------------- | ------------------------------------- | ||||
.Ed | .Ed | ||||
.Pp | .Pp | ||||
\fBNNN_NO_X:\fR X display is unavailable. Copy file path(s) to \fI/tmp/nnncp\fR. | |||||
\fBNNN_NO_X:\fR X display is unavailable. Copy file path(s) to \fI/tmp/nnncp$USER\fR. | |||||
.Bd -literal | .Bd -literal | ||||
export NNN_NO_X=1 | export NNN_NO_X=1 | ||||
.Ed | .Ed | ||||
@@ -195,9 +195,6 @@ disabledbg() | |||||
#define NUM_EVENT_FDS 1 | #define NUM_EVENT_FDS 1 | ||||
#endif | #endif | ||||
/* File path to copy file names when X is not available */ | |||||
#define TMP_CP_PATH "/tmp/nnncp" | |||||
/* TYPE DEFINITIONS */ | /* TYPE DEFINITIONS */ | ||||
typedef unsigned long ulong; | typedef unsigned long ulong; | ||||
typedef unsigned int uint; | typedef unsigned int uint; | ||||
@@ -317,6 +314,9 @@ static const char messages[][16] = | |||||
/* For use in functions which are isolated and don't return the buffer */ | /* For use in functions which are isolated and don't return the buffer */ | ||||
static char g_buf[MAX_CMD_LEN] __attribute__ ((aligned)); | static char g_buf[MAX_CMD_LEN] __attribute__ ((aligned)); | ||||
/* Buffer for file path copy file */ | |||||
static char g_cppath[48] __attribute__ ((aligned)); | |||||
/* Forward declarations */ | /* Forward declarations */ | ||||
static void redraw(char *path); | static void redraw(char *path); | ||||
@@ -635,7 +635,7 @@ xbasename(char *path) | |||||
static void | static void | ||||
writecp(const char *buf, const size_t buflen) | writecp(const char *buf, const size_t buflen) | ||||
{ | { | ||||
FILE *fp = fopen(TMP_CP_PATH, "w"); | |||||
FILE *fp = fopen(g_cppath, "w"); | |||||
if (fp) { | if (fp) { | ||||
fwrite(buf, 1, buflen, fp); | fwrite(buf, 1, buflen, fp); | ||||
@@ -3318,9 +3318,14 @@ main(int argc, char *argv[]) | |||||
cfg.quote = 1; | cfg.quote = 1; | ||||
/* Check if X11 is available */ | /* Check if X11 is available */ | ||||
if (getenv("NNN_NO_X")) | |||||
if (getenv("NNN_NO_X")) { | |||||
cfg.noxdisplay = 1; | cfg.noxdisplay = 1; | ||||
struct passwd *pass = getpwuid(getuid()); | |||||
xstrlcpy(g_cppath, "/tmp/nnncp", 11); | |||||
xstrlcpy(g_cppath + 10, pass->pw_name, 33); | |||||
} | |||||
signal(SIGINT, SIG_IGN); | signal(SIGINT, SIG_IGN); | ||||
/* Test initial path */ | /* Test initial path */ | ||||