-/* Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2022 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
/*
* X/Open Portability Guide 4.2: ftw.h
FTW_NS, /* Unstatable file. */
#define FTW_NS FTW_NS
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
FTW_SL, /* Symbolic link. */
# define FTW_SL FTW_SL
# define FTW_CHDIR FTW_CHDIR
FTW_DEPTH = 8 /* Report files in directory before directory itself.*/
# define FTW_DEPTH FTW_DEPTH
+# ifdef __USE_GNU
+ ,
+ FTW_ACTIONRETVAL = 16 /* Assume callback to return FTW_* values instead of
+ zero to continue and non-zero to terminate. */
+# define FTW_ACTIONRETVAL FTW_ACTIONRETVAL
+# endif
+};
+
+#ifdef __USE_GNU
+/* Return values from callback functions. */
+enum
+{
+ FTW_CONTINUE = 0, /* Continue with next sibling or for FTW_D with the
+ first child. */
+# define FTW_CONTINUE FTW_CONTINUE
+ FTW_STOP = 1, /* Return from `ftw' or `nftw' with FTW_STOP as return
+ value. */
+# define FTW_STOP FTW_STOP
+ FTW_SKIP_SUBTREE = 2, /* Only meaningful for FTW_D: Don't walk through the
+ subtree, instead just continue with its next
+ sibling. */
+# define FTW_SKIP_SUBTREE FTW_SKIP_SUBTREE
+ FTW_SKIP_SIBLINGS = 3,/* Continue with FTW_DP callback for current directory
+ (if FTW_DEPTH) and then its siblings. */
+# define FTW_SKIP_SIBLINGS FTW_SKIP_SIBLINGS
};
+#endif
/* Structure used for fourth argument to callback function for `nftw'. */
struct FTW
/* Convenient types for callback functions. */
-typedef int (*__ftw_func_t) __P ((__const char *__filename,
- __const struct stat *__status, int __flag));
+typedef int (*__ftw_func_t) (const char *__filename,
+ const struct stat *__status, int __flag);
#ifdef __USE_LARGEFILE64
-typedef int (*__ftw64_func_t) __P ((__const char *__filename,
- __const struct stat64 *__status,
- int __flag));
+typedef int (*__ftw64_func_t) (const char *__filename,
+ const struct stat64 *__status, int __flag);
#endif
#ifdef __USE_XOPEN_EXTENDED
-typedef int (*__nftw_func_t) __P ((__const char *__filename,
- __const struct stat *__status, int __flag,
- struct FTW *__info));
+typedef int (*__nftw_func_t) (const char *__filename,
+ const struct stat *__status, int __flag,
+ struct FTW *__info);
# ifdef __USE_LARGEFILE64
-typedef int (*__nftw64_func_t) __P ((__const char *__filename,
- __const struct stat64 *__status,
- int __flag, struct FTW *__info));
+typedef int (*__nftw64_func_t) (const char *__filename,
+ const struct stat64 *__status,
+ int __flag, struct FTW *__info);
# endif
#endif
-/* Call a function on every element in a directory tree. */
+/* Call a function on every element in a directory tree.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
#ifndef __USE_FILE_OFFSET64
-extern int ftw __P ((__const char *__dir, __ftw_func_t __func,
- int __descriptors));
+extern int ftw (const char *__dir, __ftw_func_t __func, int __descriptors)
+ __nonnull ((1, 2));
#else
# ifdef __REDIRECT
-extern int __REDIRECT (ftw, __P ((__const char *__dir, __ftw_func_t __func,
- int __descriptors)), ftw64);
+# ifndef __USE_TIME_BITS64
+extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
+ int __descriptors), ftw64) __nonnull ((1, 2));
+# else
+extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
+ int __descriptors), __ftw64_time64)
+ __nonnull ((1, 2));
+# endif
# else
-# define nftw nftw64
+# ifndef __USE_TIME_BITS64
+# define ftw ftw64
+# else
+# define ftw __ftw64_time64
+# endif
# endif
#endif
#ifdef __USE_LARGEFILE64
-extern int ftw64 __P ((__const char *__dir, __ftw64_func_t __func,
- int __descriptors));
+# ifndef __USE_TIME_BITS64
+extern int ftw64 (const char *__dir, __ftw64_func_t __func,
+ int __descriptors) __nonnull ((1, 2));
+# else
+# ifdef __REDIRECT
+extern int __REDIRECT (ftw64, (const char *__dir, __ftw64_func_t __func,
+ int __descriptors),
+ __ftw64_time64)
+ __nonnull ((1, 2));
+# else
+# define nftw64 __nftw64_time64
+# endif
+# endif
#endif
#ifdef __USE_XOPEN_EXTENDED
/* Call a function on every element in a directory tree. FLAG allows
- to specify the behaviour more detailed. */
+ to specify the behaviour more detailed.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
# ifndef __USE_FILE_OFFSET64
-extern int nftw __P ((__const char *__dir, __nftw_func_t __func,
- int __descriptors, int __flag));
+extern int nftw (const char *__dir, __nftw_func_t __func, int __descriptors,
+ int __flag) __nonnull ((1, 2));
# else
# ifdef __REDIRECT
-extern int __REDIRECT (nftw, __P ((__const char *__dir, __nftw_func_t __func,
- int __descriptors, int __flag)), nftw64);
+# ifndef __USE_TIME_BITS64
+extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
+ int __descriptors, int __flag), nftw64)
+ __nonnull ((1, 2));
+# else
+extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
+ int __descriptors, int __flag), __nftw64_time64)
+ __nonnull ((1, 2));
+# endif
# else
-# define nftw nftw64
+# ifndef __USE_TIME_BITS64
+# define nftw nftw64
+# else
+# define nftw __nftw64_time64
+# endif
# endif
# endif
# ifdef __USE_LARGEFILE64
-extern int nftw64 __P ((__const char *__dir, __nftw64_func_t __func,
- int __descriptors, int __flag));
+# ifndef __USE_TIME_BITS64
+extern int nftw64 (const char *__dir, __nftw64_func_t __func,
+ int __descriptors, int __flag) __nonnull ((1, 2));
+# else
+# ifdef __REDIRECT
+extern int __REDIRECT (nftw64, (const char *__dir, __nftw64_func_t __func,
+ int __descriptors, int __flag),
+ __nftw64_time64)
+ __nonnull ((1, 2));
+# else
+# define nftw64 __nftw64_time64
+# endif
+# endif
# endif
#endif