2014-11-07 17:54:43 (UTC-02:00)
Marcel Rodrigues <marcelgmr@gmail.com>
Fix status padding.
diff --git a/config.h b/config.h index 4347d1c..87ea5d3 100644 --- a/config.h +++ b/config.h @@ -16,4 +16,8 @@ #define RVK_TG_DIRS "d" #define RVK_TG_HIDDEN "s" +/* Colors available: DEFAULT, RED, GREEN, YELLOW, BLUE, CYAN, MAGENTA, WHITE. */ +#define RVC_CWD BLUE +#define RVC_STATUS GREEN + #define RV_JUMP 10 diff --git a/rover.c b/rover.c index b54ae47..56a1ee6 100644 --- a/rover.c +++ b/rover.c @@ -134,7 +134,8 @@ init_term() static void update_browser() { - int i, j; + int i, j, n; + char fmt[32]; for (i = 0, j = rover.scroll; i < HEIGHT && j < rover.nfiles; i++, j++) { if (j == rover.fsel) @@ -147,13 +148,15 @@ update_browser() wattr_off(rover.window, A_REVERSE, NULL); } wrefresh(rover.window); + sprintf(STATUS, "%d/%d%n", rover.fsel + 1, rover.nfiles, &n); + sprintf(fmt, "%% %dd/%%d", 10-n); STATUS[0] = rover.flags & SHOW_FILES ? 'F' : ' '; STATUS[1] = rover.flags & SHOW_DIRS ? 'D' : ' '; STATUS[2] = rover.flags & SHOW_HIDDEN ? 'H' : ' '; - /* C89 doesn't have snprintf(), but a buffer overrun will only occur here - * if the number of files reach 10 ^ (STATUSSZ / 2), which is unlikely. */ - sprintf(STATUS+3, "% 10d/%d", rover.fsel + 1, rover.nfiles); + sprintf(STATUS+3, fmt, rover.fsel + 1, rover.nfiles); + color_set(RVC_STATUS, NULL); mvaddstr(LINES - 1, COLS - strlen(STATUS), STATUS); + color_set(DEFAULT, NULL); refresh(); } @@ -168,7 +171,9 @@ cd() rover.scroll = 0; (void) chdir(rover.cwd); (void) mvhline(0, 0, ' ', COLS); + color_set(RVC_CWD, NULL); (void) mvaddnstr(0, 0, rover.cwd, COLS); + color_set(DEFAULT, NULL); for (i = 0; i < rover.nfiles; i++) free(rover.fnames[i]); if (rover.nfiles)