From: Arun Prakash Jana <engineerarun@gmail.com>
Date: Mon, 11 Feb 2019 16:12:30 +0000 (+0530)
Subject: Use tmp buffer to redraw()
X-Git-Tag: v2.3~13
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=671a0ef77226a1eaa3e3128bcd3d760e996283db;p=nnn.git

Use tmp buffer to redraw()
---

diff --git a/src/nnn.c b/src/nnn.c
index 415fd005..7602d96a 100644
--- 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");
 	}