make glob mark symlinks-to-directories with the GLOB_MARK flag
authorRich Felker <dalias@aerifal.cx>
Tue, 24 Jan 2012 00:51:34 +0000 (19:51 -0500)
committerRich Felker <dalias@aerifal.cx>
Tue, 24 Jan 2012 00:51:34 +0000 (19:51 -0500)
POSIX is unclear on whether it should, but all historical
implementations seem to behave this way, and it seems more useful to
applications.

src/regex/glob.c

index bbe78f7d9a345372a0822d4a89d4fbdb5b6d6d16..3476e010d573b71443f3321e695435df36274197 100644 (file)
@@ -117,7 +117,7 @@ static int match_in_dir(const char *d, const char *p, int flags, int (*errfunc)(
                } else {
                        int mark = 0;
                        if (flags & GLOB_MARK) {
-                               if (de->d_type)
+                               if (de->d_type && !S_ISLNK(de->d_type<<12))
                                        mark = S_ISDIR(de->d_type<<12);
                                else {
                                        struct stat st;