From: Arun Prakash Jana Date: Wed, 27 Feb 2019 13:57:35 +0000 (+0530) Subject: Simpler symlink to dir check X-Git-Tag: v2.4~100 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=26861532a24d32405546d9734936c0f684db9b33;p=nnn.git Simpler symlink to dir check --- diff --git a/src/nnn.c b/src/nnn.c index 20f8cb3f..cbad15e3 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -2676,19 +2676,15 @@ static int dentfill(char *path, struct entry **dents) } /* Flag if this is a dir or symlink to a dir */ + if (S_ISLNK(sb.st_mode)) { + sb.st_mode = 0; + fstatat(fd, namep, &sb, 0); + } + if (S_ISDIR(sb.st_mode)) dentp->flags |= DIR_OR_LINK_TO_DIR; - else if (!S_ISLNK(sb.st_mode)) { - if (dentp->flags & DIR_OR_LINK_TO_DIR) - dentp->flags &= ~DIR_OR_LINK_TO_DIR; - } else { - if (!fstatat(fd, namep, &sb, 0)) { - if (S_ISDIR(sb.st_mode)) - dentp->flags |= DIR_OR_LINK_TO_DIR; - else - dentp->flags &= ~DIR_OR_LINK_TO_DIR; - } - } + else if (dentp->flags & DIR_OR_LINK_TO_DIR) + dentp->flags &= ~DIR_OR_LINK_TO_DIR; ++n; }