]> Sergey Matveev's repositories - nnn.git/commitdiff
Code refactor
authorArun Prakash Jana <engineerarun@gmail.com>
Wed, 15 May 2019 16:59:38 +0000 (22:29 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Wed, 22 May 2019 03:18:45 +0000 (08:48 +0530)
src/nnn.c

index c94ecbe5b761d6ff731264ab24d921ce5b3201c6..2731e13413e1e4611734eeb5b1918f39843d9c9b 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
 #define ASCII_MAX 128
 #define EXEC_ARGS_MAX 8
 #define SCROLLOFF 5
+#define LONG_SIZE sizeof(ulong)
 
 /* Entry flags */
 #define DIR_OR_LINK_TO_DIR 0x1
@@ -536,7 +537,7 @@ static uint xatoi(const char *str)
 
 static char *xitoa(uint val)
 {
-       static const char hexbuf[] = "0123456789";
+       const char hexbuf[] = "0123456789";
        static char ascbuf[32] = {0};
        int i;
 
@@ -657,10 +658,10 @@ static size_t xstrlcpy(char *dest, const char *src, size_t n)
        if (!src || !dest || !n)
                return 0;
 
-       static ulong *s, *d;
-       static const uint lsize = sizeof(ulong);
-       static const uint _WSHIFT = (sizeof(ulong) == 8) ? 3 : 2;
+       ulong *s, *d;
        size_t len = strlen(src) + 1, blocks;
+       const uint _WSHIFT = (LONG_SIZE == 8) ? 3 : 2;
+
 
        if (n > len)
                n = len;
@@ -672,12 +673,12 @@ static size_t xstrlcpy(char *dest, const char *src, size_t n)
         * To enable -O3 ensure src and dest are 16-byte aligned
         * More info: http://www.felixcloutier.com/x86/MOVDQA.html
         */
-       if ((n >= lsize) && (((ulong)src & _ALIGNMENT_MASK) == 0 &&
+       if ((n >= LONG_SIZE) && (((ulong)src & _ALIGNMENT_MASK) == 0 &&
            ((ulong)dest & _ALIGNMENT_MASK) == 0)) {
                s = (ulong *)src;
                d = (ulong *)dest;
                blocks = n >> _WSHIFT;
-               n &= lsize - 1;
+               n &= LONG_SIZE - 1;
 
                while (blocks) {
                        *d = *s; // NOLINT
@@ -729,7 +730,7 @@ static void *xmemrchr(uchar *s, uchar ch, size_t n)
 
 static char *xbasename(char *path)
 {
-       char *base = xmemrchr((uchar *)path, '/', strlen(path));
+       char *base = xmemrchr((uchar *)path, '/', strlen(path)); // NOLINT
 
        return base ? base + 1 : path;
 }
@@ -1525,7 +1526,7 @@ static int matches(const char *fltr)
 
 static int filterentries(char *path)
 {
-       static wchar_t wln[REGEX_MAX] __attribute__ ((aligned));
+       wchar_t *wln = (wchar_t *)alloca(sizeof(wchar_t) * REGEX_MAX);
        char *ln = g_ctx[cfg.curctx].c_fltr;
        wint_t ch[2] = {0};
        int r, total = ndents, oldcur = cur, len;
@@ -1844,7 +1845,7 @@ static size_t mkpath(char *dir, char *name, char *out)
        else
                len = xstrlcpy(out, dir, PATH_MAX);
 
-       out[len - 1] = '/';
+       out[len - 1] = '/'; // NOLINT
        return (xstrlcpy(out + len, name, PATH_MAX - len) + len);
 }
 
@@ -2020,7 +2021,7 @@ static char *unescape(const char *str, uint maxcols)
 
 static char *coolsize(off_t size)
 {
-       static const char * const U = "BKMGTPEZY";
+       const char * const U = "BKMGTPEZY";
        static char size_buf[12]; /* Buffer to hold human readable size */
        off_t rem;
        int i;
@@ -2499,8 +2500,10 @@ static bool sshfs_unmount(char *path, char *newpath, int *presel)
        char *tmp;
 
        /* On Ubuntu it's fusermount */
-       if (!found && !getutil(cmd))
+       if (!found && !getutil(cmd)) {
                cmd[10] = '\0';
+               found = TRUE;
+       }
 
        tmp = xreadline(NULL, "host: ");
        if (!tmp[0])
@@ -2640,15 +2643,15 @@ static void dentfree(void)
 
 static int dentfill(char *path, struct entry **dents)
 {
+       static uint open_max;
        int n = 0, count, flags = 0;
        ulong num_saved;
        struct dirent *dp;
-       char *namep, *pnb;
+       char *namep, *pnb, *buf = NULL;
        struct entry *dentp;
        size_t off = 0, namebuflen = NAMEBUF_INCR;
        struct stat sb_path, sb;
        DIR *dirp = opendir(path);
-       static uint open_max;
 
        if (!dirp)
                return 0;
@@ -2658,6 +2661,7 @@ static int dentfill(char *path, struct entry **dents)
        if (cfg.blkorder) {
                num_files = 0;
                dir_blocks = 0;
+               buf = (char *)alloca(strlen(path) + NAME_MAX + 2);
 
                if (fstatat(fd, path, &sb_path, 0) == -1) {
                        closedir(dirp);
@@ -2702,12 +2706,12 @@ static int dentfill(char *path, struct entry **dents)
                        if (S_ISDIR(sb.st_mode)) {
                                if (sb_path.st_dev == sb.st_dev) {
                                        ent_blocks = 0;
-                                       mkpath(path, namep, g_buf);
+                                       mkpath(path, namep, buf);
 
                                        mvprintw(xlines - 1, 0, "scanning %s [^C aborts]\n",
-                                                xbasename(g_buf));
+                                                xbasename(buf));
                                        refresh();
-                                       if (nftw(g_buf, nftw_fn, open_max,
+                                       if (nftw(buf, nftw_fn, open_max,
                                                 FTW_MOUNT | FTW_PHYS) == -1) {
                                                DPRINTF_S("nftw failed");
                                                dir_blocks += (cfg.apparentsz
@@ -2792,12 +2796,11 @@ static int dentfill(char *path, struct entry **dents)
                        if (S_ISDIR(sb.st_mode)) {
                                ent_blocks = 0;
                                num_saved = num_files + 1;
-                               mkpath(path, namep, g_buf);
+                               mkpath(path, namep, buf);
 
-                               mvprintw(xlines - 1, 0, "scanning %s [^C aborts]\n",
-                                        xbasename(g_buf));
+                               mvprintw(xlines - 1, 0, "scanning %s [^C aborts]\n", xbasename(buf));
                                refresh();
-                               if (nftw(g_buf, nftw_fn, open_max, FTW_MOUNT | FTW_PHYS) == -1) {
+                               if (nftw(buf, nftw_fn, open_max, FTW_MOUNT | FTW_PHYS) == -1) {
                                        DPRINTF_S("nftw failed");
                                        dentp->blocks = (cfg.apparentsz ? sb.st_size : sb.st_blocks);
                                } else