diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | io/fts.c | 16 |
2 files changed, 16 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index f6a03715da..962e730d5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2014-10-20 Roland McGrath <roland@hack.frob.com> + * io/fts.c (dirent_not_directory): New function. + (fts_build): Call it. + +2014-10-20 Roland McGrath <roland@hack.frob.com> + * nptl/version.c (__nptl_main): Use normal __write rather than INTERNAL_SYSCALL. (banner): Update copyright years. diff --git a/io/fts.c b/io/fts.c index c9c054d6d3..46cbb72571 100644 --- a/io/fts.c +++ b/io/fts.c @@ -561,6 +561,16 @@ fts_children(sp, instr) return (sp->fts_child); } +static inline int +dirent_not_directory(const struct dirent *dp) +{ +#if defined DT_DIR && defined _DIRENT_HAVE_D_TYPE + return dp->d_type != DT_DIR && dp->d_type != DT_UNKNOWN; +#else + return 0; +#endif +} + /* * This is the tricky part -- do not casually change *anything* in here. The * idea is to build the linked list of entries that are used by fts_children @@ -759,11 +769,7 @@ mem1: saved_errno = errno; p->fts_info = FTS_NSOK; p->fts_accpath = cur->fts_accpath; } else if (nlinks == 0 -#if defined DT_DIR && defined _DIRENT_HAVE_D_TYPE - || (nostat && - dp->d_type != DT_DIR && dp->d_type != DT_UNKNOWN) -#endif - ) { + || (nostat && dirent_not_directory(dp))) { p->fts_accpath = ISSET(FTS_NOCHDIR) ? p->fts_path : p->fts_name; p->fts_info = FTS_NSOK; |