diff options
Diffstat (limited to 'io/ftw.h')
-rw-r--r-- | io/ftw.h | 81 |
1 files changed, 70 insertions, 11 deletions
@@ -1,6 +1,5 @@ /* Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Ian Lance Taylor (ian@airs.com). 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 @@ -26,22 +25,82 @@ #define _FTW_H 1 #include <features.h> +#include <sys/types.h> #include <statbuf.h> -/* The FLAG argument to the user function passed to ftw. */ -#define FTW_F 0 /* Regular file. */ -#define FTW_D 1 /* Directory. */ -#define FTW_DNR 2 /* Unreadable directory. */ -#define FTW_NS 3 /* Unstatable file. */ __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 + +#ifdef __USE_XOPEN_EXTENDED + + FTW_SL, /* Symbolic link. */ +# define FTW_SL FTW_SL + +/* 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 +}; + +/* 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) __P ((__const char *filename, + __const struct stat *status, int flag)); +#ifdef __USE_XOPEN_EXTENDED +typedef int (*__nftw_func_t) __P ((__const char *filename, + __const struct stat *status, int flag, + struct FTW *)); +#endif + /* Call a function on every element in a directory tree. */ -extern int ftw __P ((__const char *__dir, - int (*__func) (__const char *__file, - __const struct stat *__status, - int __flag), - int __descriptors)); +extern int ftw __P ((__const char *dir, __ftw_func_t func, int descriptors)); + +#ifdef __USE_XOPEN_EXTENDED +/* Call a function on every element in a directory tree. FLAG allows + to specify the behaviour more detailed. */ +extern int nftw __P ((__const char *dir, __nftw_func_t func, + int descriptors, int flag)); +#endif __END_DECLS |