maint: fts: give __opendir2 a new parameter and rename
[gnulib.git] / lib / fts.c
index 62ce38f..e600a99 100644 (file)
--- a/lib/fts.c
+++ b/lib/fts.c
@@ -1192,7 +1192,7 @@ set_stat_type (struct stat *st, unsigned int dtype)
   st->st_mode = type;
 }
 
-# define __opendir2(file, flag) \
+#define fts_opendir(file, Pdir_fd)                              \
         opendirat((! ISSET(FTS_NOCHDIR) && ISSET(FTS_CWDFD)     \
                    ? sp->fts_cwd_fd : AT_FDCWD),                \
                   file,                                         \
@@ -1201,7 +1201,7 @@ set_stat_type (struct stat *st, unsigned int dtype)
                            && cur->fts_level == FTS_ROOTLEVEL)) \
                     ? O_NOFOLLOW : 0)                           \
                    | (ISSET (FTS_NOATIME) ? O_NOATIME : 0)),    \
-                  &dir_fd)
+                  Pdir_fd)
 
 /*
  * This is the tricky part -- do not casually change *anything* in here.  The
@@ -1242,38 +1242,37 @@ fts_build (register FTS *sp, int type)
 
         /* Open the directory for reading.  If this fails, we're done.
            If being called from fts_read, set the fts_info field.  */
-       if ((dirp = __opendir2(cur->fts_accpath, oflag)) == NULL) {
+        if ((dirp = fts_opendir(cur->fts_accpath, &dir_fd)) == NULL) {
                 if (type == BREAD) {
                         cur->fts_info = FTS_DNR;
                         cur->fts_errno = errno;
                 }
                 return (NULL);
         }
-       /* Rather than calling fts_stat for each and every entry encountered
-          in the readdir loop (below), stat each directory only right after
-          opening it.  */
-       if (cur->fts_info == FTS_NSOK)
-         cur->fts_info = fts_stat(sp, cur, false);
-       else if (sp->fts_options & FTS_TIGHT_CYCLE_CHECK) {
-                /* Now read the stat info again after opening a directory to
-                 * reveal eventual changes caused by a submount triggered by
-                 * the traversal.  But do it only for utilities which use
-                 * FTS_TIGHT_CYCLE_CHECK.  Therefore, only find and du
-                 * benefit/suffer from this feature for now.
-                 */
-                LEAVE_DIR (sp, cur, "4");
-                fts_stat (sp, cur, false);
-                if (! enter_dir (sp, cur)) {
-                         __set_errno (ENOMEM);
-                         return NULL;
-                }
-        }
+        /* Rather than calling fts_stat for each and every entry encountered
+           in the readdir loop (below), stat each directory only right after
+           opening it.  */
+        if (cur->fts_info == FTS_NSOK)
+          cur->fts_info = fts_stat(sp, cur, false);
+        else if (sp->fts_options & FTS_TIGHT_CYCLE_CHECK)
+          {
+            /* Now read the stat info again after opening a directory to
+               reveal eventual changes caused by a submount triggered by
+               the traversal.  But do it only for utilities which use
+               FTS_TIGHT_CYCLE_CHECK.  Therefore, only find and du
+               benefit/suffer from this feature for now. */
+            LEAVE_DIR (sp, cur, "4");
+            fts_stat (sp, cur, false);
+            if (! enter_dir (sp, cur))
+              {
+                __set_errno (ENOMEM);
+                return NULL;
+              }
+          }
 
-        /*
-         * Nlinks is the number of possible entries of type directory in the
-         * directory if we're cheating on stat calls, 0 if we're not doing
-         * any stat calls at all, (nlink_t) -1 if we're statting everything.
-         */
+        /* Nlinks is the number of possible entries of type directory in the
+           directory if we're cheating on stat calls, 0 if we're not doing
+           any stat calls at all, (nlink_t) -1 if we're statting everything.  */
         if (type == BNAMES) {
                 nlinks = 0;
                 /* Be quiet about nostat, GCC. */