commit 943a7c13ac075cec66c136710f09e547a157db5a
parent 7cbc79a5fcec87d7f792f7dc648fce2eab59430e
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date: Sun, 15 Aug 2021 19:11:04 +0530
Fix broken statusbar when symlink name exceeds max cols
Diffstat:
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/src/nnn.c b/src/nnn.c
@@ -6037,7 +6037,7 @@ static bool set_time_type(int *presel)
static void statusbar(char *path)
{
- int i = 0, extnlen = 0;
+ int i = 0, len = 0;
char *ptr;
pEntry pent = &pdents[cur];
@@ -6051,8 +6051,8 @@ static void statusbar(char *path)
i = (int)(pent->nlen - 1);
ptr = xextension(pent->name, i);
if (ptr)
- extnlen = i - (ptr - pent->name);
- if (!ptr || extnlen > 5 || extnlen < 2)
+ len = i - (ptr - pent->name);
+ if (!ptr || len > 5 || len < 2)
ptr = "\b";
} else
ptr = "\b";
@@ -6106,16 +6106,14 @@ static void statusbar(char *path)
#endif
if (S_ISLNK(pent->mode)) {
i = readlink(pent->name, g_buf, PATH_MAX);
-
addstr(coolsize(i >= 0 ? i : pent->size)); /* Show symlink size */
-
if (i > 1) { /* Show symlink target */
- g_buf[i] = '\0';
-#ifdef ICONS_ENABLED
- addstr(" "MD_ARROW_FORWARD);
-#else
+ int y;
+
addstr(" ->");
-#endif
+ getyx(stdscr, len, y);
+ i = MIN(i, xcols - y);
+ g_buf[i] = '\0';
addstr(g_buf);
}
} else {