Print the resolved path for cwd

Avoids weird things like /etc/.. when displaying cwd.

Also no need for cwd to be on the heap.
This commit is contained in:
sin 2016-01-06 15:21:41 +00:00
parent 2d87145fa2
commit a715201255
1 changed files with 9 additions and 5 deletions

14
noice.c
View File

@ -595,8 +595,9 @@ populate(void)
void
redraw(void)
{
char cwd[PATH_MAX], cwdresolved[PATH_MAX];
size_t ncols;
int nlines, odd;
char *cwd;
int i;
nlines = MIN(LINES - 4, n);
@ -615,11 +616,14 @@ redraw(void)
DPRINTF_S(path);
/* No text wrapping in cwd line */
cwd = xmalloc(COLS * sizeof(char));
strlcpy(cwd, path, COLS * sizeof(char));
cwd[COLS - strlen(CWD) - 1] = '\0';
ncols = COLS;
if (ncols > PATH_MAX)
ncols = PATH_MAX;
strlcpy(cwd, path, ncols);
cwd[ncols - strlen(CWD) - 1] = '\0';
realpath(cwd, cwdresolved);
printw(CWD "%s\n\n", cwd);
printw(CWD "%s\n\n", cwdresolved);
/* Print listing */
odd = ISODD(nlines);