X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Ffts.c;h=0cbb9fb642bc49dc5203cfd014725a00d113520e;hb=9fbf8e1a391ab49dca9c608a32af9a42831f3445;hp=f00db41bc9c3263c426cc81d0961dbfb04fb13e7;hpb=665a8a0fca396d67dfed85580a48178df8b4a60e;p=gnulib.git diff --git a/lib/fts.c b/lib/fts.c index f00db41bc..0cbb9fb64 100644 --- a/lib/fts.c +++ b/lib/fts.c @@ -965,7 +965,10 @@ check_for_dir: if (p->fts_statp->st_size == FTS_STAT_REQUIRED) { FTSENT *parent = p->fts_parent; - if (parent->fts_n_dirs_remaining == 0 + if (FTS_ROOTLEVEL < p->fts_level + /* ->fts_n_dirs_remaining is not valid + for command-line-specified names. */ + && parent->fts_n_dirs_remaining == 0 && ISSET(FTS_NOSTAT) && ISSET(FTS_PHYSICAL) && link_count_optimize_ok (parent)) @@ -975,11 +978,10 @@ check_for_dir: else { p->fts_info = fts_stat(sp, p, false); - if (S_ISDIR(p->fts_statp->st_mode)) - { - if (parent->fts_n_dirs_remaining) + if (S_ISDIR(p->fts_statp->st_mode) + && p->fts_level != FTS_ROOTLEVEL + && parent->fts_n_dirs_remaining) parent->fts_n_dirs_remaining--; - } } } else