From 9f4199481a1313458d96c7be9187dc3aeee658c9 Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Sun, 14 Jan 2018 12:11:46 +0530 Subject: Improve common message handling --- nnn.c | 59 +++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 24 deletions(-) (limited to 'nnn.c') diff --git a/nnn.c b/nnn.c index 732af6f..bc33b88 100644 --- 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); } -- cgit v1.2.3-70-g09d2