]> Sergey Matveev's repositories - nnn.git/commitdiff
Reformat create link to selection
authorArun Prakash Jana <engineerarun@gmail.com>
Sat, 27 Apr 2019 12:28:55 +0000 (17:58 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 27 Apr 2019 13:00:40 +0000 (18:30 +0530)
src/nnn.c

index e5babc8945fc139952a84dfbd7edb5bd0bb55b32..578d79e17e77c06e7a6dfa450c97ce1bb6fdbb93 100644 (file)
--- 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;