aboutsummaryrefslogtreecommitdiffstats
path: root/src/nnn.c
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2019-04-27 17:58:55 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2019-04-27 18:30:40 +0530
commit8166e0169a797695dcf0ef37c0924c65ef523bf5 (patch)
treeb2c221efe391a7b686c851ce7dfc413c8f4ba96b /src/nnn.c
parentce6fc3592908e23d108e702a7d9f002e79bc16e0 (diff)
downloadnnn-8166e0169a797695dcf0ef37c0924c65ef523bf5.tar.gz
Reformat create link to selection
Diffstat (limited to 'src/nnn.c')
-rw-r--r--src/nnn.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/nnn.c b/src/nnn.c
index e5babc8..578d79e 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -370,12 +370,14 @@ static char mv[] = "mvg -gi";
#define STR_INVBM_KEY 1
#define STR_DATE_ID 2
#define STR_TMPFILE 3
+#define NONE_SELECTED 4
static const char * const messages[] = {
"no traversal",
"invalid key",
"%F %T %z",
"/.nnnXXXXXX",
+ "empty selection",
};
/* Supported configuration environment variables */
@@ -1842,7 +1844,7 @@ static size_t mkpath(char *dir, char *name, char *out)
* Create symbolic/hard link(s) to file(s) in selection list
* Returns the number of links created
*/
-static int xlink(char *suffix, char *path, char *buf, int type)
+static int xlink(char *suffix, char *path, char *buf, int *presel, int type)
{
int count = 0;
char *pbuf = pcopybuf, *fname;
@@ -1850,15 +1852,15 @@ static int xlink(char *suffix, char *path, char *buf, int type)
int (*link_fn)(const char *, const char *) = NULL;
/* Check if selection is empty */
- if (!copybufpos)
- return 0;
+ if (!copybufpos) {
+ printwait(messages[NONE_SELECTED], presel);
+ return -1;
+ }
if (type == 's') /* symbolic link */
link_fn = &symlink;
- else if (type == 'h') /* hard link */
+ else /* hard link */
link_fn = &link;
- else
- return -1;
while (pos < copybufpos) {
len = strlen(pbuf);
@@ -1873,6 +1875,9 @@ static int xlink(char *suffix, char *path, char *buf, int type)
pbuf += len + 1;
}
+ if (!count)
+ printwait("none created", presel);
+
return count;
}
@@ -3707,7 +3712,7 @@ nochange:
break;
}
- printwait("none selected", &presel);
+ printwait(messages[NONE_SELECTED], &presel);
goto nochange;
case SEL_CP:
case SEL_MV:
@@ -3894,13 +3899,11 @@ nochange:
} else if (r == 's' || r == 'h') {
if (tmp[0] == '@' && tmp[1] == '\0')
tmp[0] = '\0';
- r = xlink(tmp, path, newpath, r);
+ r = xlink(tmp, path, newpath, &presel, r);
close(fd);
- if (r <= 0) {
- printwait("none created", &presel);
+ if (r <= 0)
goto nochange;
- }
if (cfg.filtermode)
presel = FILTER;