From 4885b5fc2f7e9a0f81ac5f41c85f72a851beaad1 Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Fri, 8 Mar 2019 02:48:20 +0530 Subject: Avoid buffer copy --- src/nnn.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/nnn.c b/src/nnn.c index 61ffca8..e083473 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -1935,6 +1935,10 @@ static bool parsebmstr(void) } if (*bms == ';') { + /* Remove trailing space */ + if (i > 0 && *(bms - 1) == '/') + *(bms - 1) = '\0'; + *bms = '\0'; nextkey = bms + 1; } @@ -2738,6 +2742,7 @@ static void populate(char *path, char *lastname) static void redraw(char *path) { static char buf[NAME_MAX + 65] __attribute__ ((aligned)); + char c; size_t ncols = COLS; int nlines = MIN(LINES - 4, ndents), i, attrs; @@ -2758,21 +2763,9 @@ static void redraw(char *path) return; } - /* Strip trailing slashes */ - for (i = strlen(path) - 1; i > 0; --i) - if (path[i] == '/') - path[i] = '\0'; - else - break; - DPRINTF_D(cur); DPRINTF_S(path); - if (!realpath(path, g_buf)) { - printwarn(); - return; - } - if (ncols > PATH_MAX) ncols = PATH_MAX; @@ -2800,9 +2793,11 @@ static void redraw(char *path) attron(A_UNDERLINE); /* No text wrapping in cwd line */ - g_buf[ncols - 11] = '\0'; - printw("%s\n\n", g_buf); + c = path[ncols - 11]; + path[ncols - 11] = '\0'; + printw("%s\n\n", path); attroff(A_UNDERLINE); + path[ncols - 11] = c; /* Fallback to light mode if less than 35 columns */ if (ncols < 35 && cfg.showdetail) { @@ -2812,7 +2807,7 @@ static void redraw(char *path) /* Calculate the number of cols available to print entry name */ if (cfg.showdetail) - ncols -= 36; + ncols -= 35; else ncols -= 5; -- cgit v1.2.3-70-g09d2