#ifdef KEY_RESIZE
/* Clear the old prompt */
-static inline void clearoldprompt()
+static inline void clearoldprompt(void)
{
move(xlines - 1, 0);
clrtoeol();
int ncols = (xcols <= PATH_MAX) ? xcols : PATH_MAX;
int lastln = xlines, onscreen = xlines - 4;
int i, attrs;
+ size_t len = strlen(path);
char buf[12];
char c;
- char *ptr = path, *base = xbasename(path);
+ char *ptr = path, *base;
--lastln;
printw("\b] "); /* 10 chars printed in total for contexts - "[1 2 3 4] " */
attron(A_UNDERLINE);
- /* No text wrapping in cwd line, store the truncating char in c */
- c = path[ncols - 11];
- path[ncols - 11] = '\0';
/* Print path */
- if (base - ptr <= 1)
- printw("%s\n\n", path);
+ if ((len + 11) <= (size_t)ncols)
+ addnstr(path, ncols - 11);
else {
- base = base - 1;
- while (ptr < base) {
- if (*ptr == '/') {
- addch(*ptr);
- addch(*(++ptr));
+ base = xbasename(path);
+ if ((base - ptr) <= 1)
+ addnstr(path, ncols - 11);
+ else {
+ len = 0;
+ --base;
+ while (ptr < base) {
+ if (*ptr == '/') {
+ addch(*ptr);
+ addch(*(++ptr));
+ len += 2; /* 2 characters added */
+ }
+ ++ptr;
}
- ++ptr;
- }
- printw("/%s\n\n", base + 1);
+ addnstr(base, ncols - (11 + len + 1));
+ }
}
+ /* Go to first entry */
+ move(2, 0);
+
attroff(A_UNDERLINE);
- path[ncols - 11] = c; /* Restore c */
/* Calculate the number of cols available to print entry name */
if (cfg.showdetail) {