Disable dircolor if no sub-directories

Fix regression from 1e5a0b8c5b.
This commit is contained in:
Arun Prakash Jana 2017-09-02 14:02:29 +05:30
parent d0e4c0aac2
commit 056a79635a
No known key found for this signature in database
GPG key ID: A75979F35C080412

27
nnn.c
View file

@ -1158,6 +1158,15 @@ readinput(void)
return g_buf[0] ? g_buf : NULL;
}
static void
resetdircolor(mode_t mode)
{
if (cfg.dircolor && !S_ISDIR(mode)) {
attroff(COLOR_PAIR(1) | A_BOLD);
cfg.dircolor = 0;
}
}
/*
* Replace escape characters in a string with '?'
* Adjust string length to maxcols if > 0;
@ -1202,6 +1211,9 @@ printent(struct entry *ent, int sel, uint namecols)
pname = unescape(ent->name, namecols);
/* Directories are always shown on top */
resetdircolor(ent->mode);
if (S_ISDIR(ent->mode))
printw("%s%s/\n", CURSYM(sel), pname);
else if (S_ISLNK(ent->mode))
@ -1214,12 +1226,6 @@ printent(struct entry *ent, int sel, uint namecols)
printw("%s%s*\n", CURSYM(sel), pname);
else
printw("%s%s\n", CURSYM(sel), pname);
/* Dirs are always shown on top */
if (cfg.dircolor && !S_ISDIR(ent->mode)) {
attroff(COLOR_PAIR(1) | A_BOLD);
cfg.dircolor = 0;
}
}
static char *
@ -1254,6 +1260,9 @@ printent_long(struct entry *ent, int sel, uint namecols)
strftime(buf, 18, "%d-%m-%Y %H:%M", localtime(&ent->t));
pname = unescape(ent->name, namecols);
/* Directories are always shown on top */
resetdircolor(ent->mode);
if (sel)
attron(A_REVERSE);
@ -1293,12 +1302,6 @@ printent_long(struct entry *ent, int sel, uint namecols)
printw("%s%-16.16s %8.8s %s\n", CURSYM(sel), buf, coolsize(ent->blocks << 9), pname);
}
/* Dirs are always shown on top */
if (cfg.dircolor && !S_ISDIR(ent->mode)) {
attroff(COLOR_PAIR(1) | A_BOLD);
cfg.dircolor = 0;
}
if (sel)
attroff(A_REVERSE);
}