| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 | /* Copyright (C) 1992,1996-1999,2003,2004 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 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   Lesser General Public License for more details.   You should have received a copy of the GNU Lesser General Public   License along with the GNU C Library; if not, write to the Free   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   02111-1307 USA.  *//* *	X/Open Portability Guide 4.2: ftw.h */#ifndef _FTW_H#define	_FTW_H	1#include <features.h>#include <sys/types.h>#include <sys/stat.h>__BEGIN_DECLS/* Values for the FLAG argument to the user function passed to `ftw'   and 'nftw'.  */enum{  FTW_F,		/* Regular file.  */#define FTW_F	 FTW_F  FTW_D,		/* Directory.  */#define FTW_D	 FTW_D  FTW_DNR,		/* Unreadable directory.  */#define FTW_DNR	 FTW_DNR  FTW_NS,		/* Unstatable file.  */#define FTW_NS	 FTW_NS#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED  FTW_SL,		/* Symbolic link.  */# define FTW_SL	 FTW_SL#endif#ifdef __USE_XOPEN_EXTENDED/* These flags are only passed from the `nftw' function.  */  FTW_DP,		/* Directory, all subdirs have been visited. */# define FTW_DP	 FTW_DP  FTW_SLN		/* Symbolic link naming non-existing file.  */# define FTW_SLN FTW_SLN#endif	/* extended X/Open */};#ifdef __USE_XOPEN_EXTENDED/* Flags for fourth argument of `nftw'.  */enum{  FTW_PHYS = 1,		/* Perform physical walk, ignore symlinks.  */# define FTW_PHYS	FTW_PHYS  FTW_MOUNT = 2,	/* Report only files on same file system as the			   argument.  */# define FTW_MOUNT	FTW_MOUNT  FTW_CHDIR = 4,	/* Change to current directory while processing it.  */# 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  {    int base;    int level;  };#endif	/* extended X/Open *//* Convenient types for callback functions.  */typedef int (*__ftw_func_t) (__const char *__filename,			     __const struct stat *__status, int __flag);#ifdef __USE_LARGEFILE64typedef int (*__ftw64_func_t) (__const char *__filename,			       __const struct stat64 *__status, int __flag);#endif#ifdef __USE_XOPEN_EXTENDEDtypedef int (*__nftw_func_t) (__const char *__filename,			      __const struct stat *__status, int __flag,			      struct FTW *__info);# ifdef __USE_LARGEFILE64typedef 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.   This function is a possible cancellation point and therefore not   marked with __THROW.  */#ifndef __USE_FILE_OFFSET64extern int ftw (__const char *__dir, __ftw_func_t __func, int __descriptors)     __nonnull ((1, 2));#else# ifdef __REDIRECTextern int __REDIRECT (ftw, (__const char *__dir, __ftw_func_t __func,			     int __descriptors), ftw64) __nonnull ((1, 2));# else#  define ftw ftw64# endif#endif#ifdef __USE_LARGEFILE64extern int ftw64 (__const char *__dir, __ftw64_func_t __func,		  int __descriptors) __nonnull ((1, 2));#endif#ifdef __USE_XOPEN_EXTENDED/* Call a function on every element in a directory tree.  FLAG allows   to specify the behaviour more detailed.   This function is a possible cancellation point and therefore not   marked with __THROW.  */# ifndef __USE_FILE_OFFSET64extern int nftw (__const char *__dir, __nftw_func_t __func, int __descriptors,		 int __flag) __nonnull ((1, 2));# else#  ifdef __REDIRECTextern int __REDIRECT (nftw, (__const char *__dir, __nftw_func_t __func,			      int __descriptors, int __flag), nftw64)     __nonnull ((1, 2));#  else#   define nftw nftw64#  endif# endif# ifdef __USE_LARGEFILE64extern int nftw64 (__const char *__dir, __nftw64_func_t __func,		   int __descriptors, int __flag) __nonnull ((1, 2));# endif#endif__END_DECLS#endif	/* ftw.h */
 |