From a44b23786f53c4d4f23488cddf8439eb118f0a9f Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Wed, 7 Apr 2021 09:17:36 +0530 Subject: [PATCH] Use a single routine for common code --- src/nnn.c | 55 ++++++++++++++++++++++++------------------------------- 1 file changed, 24 insertions(+), 31 deletions(-) diff --git a/src/nnn.c b/src/nnn.c index 3804fb41..e69cc150 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -3421,6 +3421,24 @@ static char *unescape(const char *str, uint_t maxcols) } #endif +static off_t get_size(off_t size, off_t *pval, uint_t comp) +{ + off_t rem = *pval; + off_t quo = rem / 10; + + if ((rem - (quo * 10)) >= 5) { + rem = quo + 1; + if (rem == comp) { + ++size; + rem = 0; + } + } else + rem = quo; + + *pval = rem; + return size; +} + static char *coolsize(off_t size) { const char * const U = "BKMGTPEZY"; @@ -3437,38 +3455,14 @@ static char *coolsize(off_t size) if (i == 1) { rem = (rem * 1000) >> 10; - rem /= 10; - if (rem % 10 >= 5) { - rem = (rem / 10) + 1; - if (rem == 10) { - ++size; - rem = 0; - } - } else - rem /= 10; + size = get_size(size, &rem, 10); } else if (i == 2) { rem = (rem * 1000) >> 10; - - if (rem % 10 >= 5) { - rem = (rem / 10) + 1; - if (rem == 100) { - ++size; - rem = 0; - } - } else - rem /= 10; - } else if (i > 0) { + size = get_size(size, &rem, 100); + } else if (i > 2) { rem = (rem * 10000) >> 10; - - if (rem % 10 >= 5) { - rem = (rem / 10) + 1; - if (rem == 1000) { - ++size; - rem = 0; - } - } else - rem /= 10; + size = get_size(size, &rem, 1000); } if (i > 0 && i < 6 && rem) { @@ -3718,7 +3712,6 @@ static void printent(const struct entry *ent, uint_t namecols, bool sel) attrs |= A_REVERSE; if (attrs) attron(attrs); - if (!ind) ++namecols; @@ -5690,7 +5683,7 @@ static void draw_line(char *path, int ncols) } move(2 + last - curscroll, 0); - printptr(&pdents[last], ncols, false); + printptr(&pdents[last], ncols, FALSE); if (g_state.oldcolor && (pdents[cur].flags & DIR_OR_LINK_TO_DIR)) { if (!dir) {/* First file is not a directory */ @@ -5703,7 +5696,7 @@ static void draw_line(char *path, int ncols) } move(2 + cur - curscroll, 0); - printptr(&pdents[cur], ncols, true); + printptr(&pdents[cur], ncols, TRUE); /* Must reset e.g. no files in dir */ if (dir)