]> Sergey Matveev's repositories - nnn.git/commitdiff
Improve common message handling
authorArun Prakash Jana <engineerarun@gmail.com>
Sun, 14 Jan 2018 06:41:46 +0000 (12:11 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sun, 14 Jan 2018 06:41:46 +0000 (12:11 +0530)
nnn.c

diff --git a/nnn.c b/nnn.c
index 732af6fe1cc3b1e6aa8cfe15066f5e87654289ce..bc33b8856635298367e123a246dff56a4c2ac902 100644 (file)
--- a/nnn.c
+++ b/nnn.c
@@ -278,14 +278,25 @@ static char * const utils[] = {
        "atool"
 };
 
-/* Common message strings */
-static const char *STR_NFTWFAIL = "nftw(3) failed";
-static const char *STR_ATROOT = "at /";
-static const char *STR_NOHOME = "HOME not set";
-static const char *STR_INPUT = "remove traversal delimiter";
-static const char *STR_INVBM = "invalid bookmark";
-static const char *STR_COPY = "set NNN_COPIER";
-static const char *STR_DATE = "%a %d %b %Y %T %z";
+/* Common strings */
+#define STR_NFTWFAIL_ID 0
+#define STR_ATROOT_ID 1
+#define STR_NOHOME_ID 2
+#define STR_INPUT_ID 3
+#define STR_INVBM_ID 4
+#define STR_COPY_ID 5
+#define STR_DATE_ID 6
+
+static const char messages[][16] =
+{
+       "nftw(3) failed",
+       "already at /",
+       "HOME not set",
+       "no traversal",
+       "invalid key",
+       "set NNN_COPIER",
+       "%a %F %T %z",
+};
 
 /* For use in functions which are isolated and don't return the buffer */
 static char g_buf[MAX_CMD_LEN] __attribute__ ((aligned));
@@ -1309,7 +1320,7 @@ get_bm_loc(char *key, char *buf)
                                char *home = getenv("HOME");
 
                                if (!home) {
-                                       DPRINTF_S(STR_NOHOME);
+                                       DPRINTF_S(messages[STR_NOHOME_ID]);
                                        return NULL;
                                }
 
@@ -1686,15 +1697,15 @@ show_stats(char *fpath, char *fname, struct stat *sb)
                sb->st_mode & 7, perms, sb->st_uid, (getpwuid(sb->st_uid))->pw_name, sb->st_gid, (getgrgid(sb->st_gid))->gr_name);
 
        /* Show last access time */
-       strftime(g_buf, 40, STR_DATE, localtime(&sb->st_atime));
+       strftime(g_buf, 40, messages[STR_DATE_ID], localtime(&sb->st_atime));
        dprintf(fd, "\n\n  Access: %s", g_buf);
 
        /* Show last modification time */
-       strftime(g_buf, 40, STR_DATE, localtime(&sb->st_mtime));
+       strftime(g_buf, 40, messages[STR_DATE_ID], localtime(&sb->st_mtime));
        dprintf(fd, "\n  Modify: %s", g_buf);
 
        /* Show last status change time */
-       strftime(g_buf, 40, STR_DATE, localtime(&sb->st_ctime));
+       strftime(g_buf, 40, messages[STR_DATE_ID], localtime(&sb->st_ctime));
        dprintf(fd, "\n  Change: %s", g_buf);
 
        if (S_ISREG(sb->st_mode)) {
@@ -1955,7 +1966,7 @@ dentfill(char *path, struct entry **dents,
                                        mkpath(path, namep, g_buf, PATH_MAX);
 
                                        if (nftw(g_buf, sum_bsizes, open_max, FTW_MOUNT | FTW_PHYS) == -1) {
-                                               printmsg(STR_NFTWFAIL);
+                                               printmsg(messages[STR_NFTWFAIL_ID]);
                                                dir_blocks += sb.st_blocks;
                                        } else
                                                dir_blocks += ent_blocks;
@@ -2033,7 +2044,7 @@ dentfill(char *path, struct entry **dents,
                                mkpath(path, namep, g_buf, PATH_MAX);
 
                                if (nftw(g_buf, sum_bsizes, open_max, FTW_MOUNT | FTW_PHYS) == -1) {
-                                       printmsg(STR_NFTWFAIL);
+                                       printmsg(messages[STR_NFTWFAIL_ID]);
                                        dentp->blocks = sb.st_blocks;
                                } else
                                        dentp->blocks = ent_blocks;
@@ -2335,7 +2346,7 @@ nochange:
                case SEL_BACK:
                        /* There is no going back */
                        if (istopdir(path)) {
-                               printmsg(STR_ATROOT);
+                               printmsg(messages[STR_ATROOT_ID]);
                                goto nochange;
                        }
 
@@ -2506,7 +2517,7 @@ nochange:
                                        snprintf(newpath, PATH_MAX, "%s%s", home, tmp + 1);
                                else {
                                        free(input);
-                                       printmsg(STR_NOHOME);
+                                       printmsg(messages[STR_NOHOME_ID]);
                                        goto nochange;
                                }
                        } else if (tmp[0] == '-' && tmp[1] == '\0') {
@@ -2527,7 +2538,7 @@ nochange:
 
                                /* Show a message if already at / */
                                if (istopdir(path)) {
-                                       printmsg(STR_ATROOT);
+                                       printmsg(messages[STR_ATROOT_ID]);
                                        free(input);
                                        goto nochange;
                                }
@@ -2662,7 +2673,7 @@ nochange:
                                break;
 
                        if (get_bm_loc(tmp, newpath) == NULL) {
-                               printmsg(STR_INVBM);
+                               printmsg(messages[STR_INVBM_ID]);
                                goto nochange;
                        }
 
@@ -2816,11 +2827,11 @@ nochange:
                                        spawn(copier, newpath, NULL, NULL, F_NONE);
                                printmsg(newpath);
                        } else if (!copier)
-                               printmsg(STR_COPY);
+                               printmsg(messages[STR_COPY_ID]);
                        goto nochange;
                case SEL_COPYMUL:
                        if (!copier) {
-                               printmsg(STR_COPY);
+                               printmsg(messages[STR_COPY_ID]);
                                goto nochange;
                        } else if (!ndents) {
                                goto nochange;
@@ -2878,7 +2889,7 @@ nochange:
 
                        /* Allow only relative, same dir paths */
                        if (tmp[0] == '/' || xstrcmp(xbasename(tmp), tmp) != 0) {
-                               printmsg(STR_INPUT);
+                               printmsg(messages[STR_INPUT_ID]);
                                goto nochange;
                        }
 
@@ -2912,7 +2923,7 @@ nochange:
                        }
 
                        /* Check if it's a dir or file */
-                       printprompt("press 'f' (file) or 'd' (dir)");
+                       printprompt("press 'f'(ile) or 'd'(ir)");
                        cleartimeout();
                        r = getch();
                        settimeout();
@@ -2947,7 +2958,7 @@ nochange:
 
                        /* Allow only relative, same dir paths */
                        if (tmp[0] == '/' || xstrcmp(xbasename(tmp), tmp) != 0) {
-                               printmsg(STR_INPUT);
+                               printmsg(messages[STR_INPUT_ID]);
                                goto nochange;
                        }
 
@@ -3104,7 +3115,7 @@ main(int argc, char *argv[])
 
        if (ipath) { /* Open a bookmark directly */
                if (get_bm_loc(ipath, cwd) == NULL) {
-                       fprintf(stderr, "%s\n", STR_INVBM);
+                       fprintf(stderr, "%s\n", messages[STR_INVBM_ID]);
                        exit(1);
                }