return NULL;
 }
 
-static void resetdircolor(mode_t mode)
+static void resetdircolor(int flags)
 {
-       if (cfg.dircolor && !S_ISDIR(mode)) {
+       if (cfg.dircolor && !(flags & DIR_OR_LINK_TO_DIR)) {
                attroff(COLOR_PAIR(cfg.curctx + 1) | A_BOLD);
                cfg.dircolor = 0;
        }
        pname = unescape(ent->name, namecols);
 
        /* Directories are always shown on top */
-       resetdircolor(ent->mode);
+       resetdircolor(ent->flags);
 
        printw("%s%s%s\n", CURSYM(sel), pname, get_file_sym(ent->mode));
 }
        pname = unescape(ent->name, namecols);
 
        /* Directories are always shown on top */
-       resetdircolor(ent->mode);
+       resetdircolor(ent->flags);
 
        if (sel)
                attron(A_REVERSE);