]> Sergey Matveev's repositories - nnn.git/commitdiff
Use tmp buffer to redraw()
authorArun Prakash Jana <engineerarun@gmail.com>
Mon, 11 Feb 2019 16:12:30 +0000 (21:42 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Mon, 11 Feb 2019 16:12:30 +0000 (21:42 +0530)
src/nnn.c

index 415fd0058bac90d010eef61393519fb5945674cc..7602d96ad18411bea3a9baf589cf57180d1641d7 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -2738,8 +2738,7 @@ static void populate(char *path, char *lastname)
 
 static void redraw(char *path)
 {
-       static char c;
-       static char buf[12];
+       static char buf[NAME_MAX + 65] __attribute__ ((aligned));
        static size_t ncols;
        static int nlines, i, attrs;
        static bool mode_changed;
@@ -2869,21 +2868,23 @@ static void redraw(char *path)
 
                        /* We need to show filename as it may be truncated in directory listing */
                        if (!cfg.blkorder)
-                               mvprintw(LINES - 1, 0, "%d/%d %s[%s]\n", cur + 1, ndents, sort,
-                                        unescape(dents[cur].name, NAME_MAX));
+                               snprintf(buf, NAME_MAX + 65, "%d/%d %s[%s]",
+                                        cur + 1, ndents, sort, unescape(dents[cur].name, NAME_MAX));
                        else {
-                               xstrlcpy(buf, coolsize(dir_blocks << BLK_SHIFT), 12);
+                               i = snprintf(buf, 64, "%d/%d ", cur + 1, ndents);
+
                                if (cfg.apparentsz)
-                                       c = 'a';
+                                       buf[i++] = 'a';
                                else
-                                       c = 'd';
+                                       buf[i++] = 'd';
 
-                               mvprintw(LINES - 1, 0,
-                                        "%d/%d %cu: %s (%lu files) vol: %s free [%s]\n",
-                                        cur + 1, ndents, c, buf, num_files,
+                               i += snprintf(buf + i, 64, "u: %s (%lu files) ",
+                                             coolsize(dir_blocks << BLK_SHIFT), num_files);
+                               snprintf(buf + i, NAME_MAX, "vol: %s free [%s]",
                                         coolsize(get_fs_info(path, FREE)),
                                         unescape(dents[cur].name, NAME_MAX));
                        }
+                       printmsg(buf);
                } else
                        printmsg("0/0");
        }