X-Git-Url: http://git.csclub.uwaterloo.ca/?p=kopensolaris-gnu%2Fglibc.git;a=blobdiff_plain;f=io%2Fftw.h;h=f2c59c44128c4e2fbd366f0e6faf2d367e4ffb66;hp=0bfdf37431a0af16085df42834c0690cf06d12a8;hb=eb6ec630c8d934d5792f5dbf25774775385cd5b9;hpb=a8cc193c227c75df72bf911001ad84086513580b diff --git a/io/ftw.h b/io/ftw.h index 0bfdf37431..f2c59c4412 100644 --- a/io/ftw.h +++ b/io/ftw.h @@ -1,6 +1,5 @@ -/* Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1992, 1996, 1997, 1998 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 @@ -22,23 +21,126 @@ */ #ifndef _FTW_H - #define _FTW_H 1 + #include -#include +#include +#include + + +__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 -/* 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. */ +#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_LARGEFILE64 +typedef int (*__ftw64_func_t) __P ((__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)); +# ifdef __USE_LARGEFILE64 +typedef int (*__nftw64_func_t) __P ((__const char *__filename, + __const struct stat64 *__status, + int __flag, struct FTW *__info)); +# endif +#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), +#ifndef __USE_FILE_OFFSET64 +extern int ftw __P ((__const char *__dir, __ftw_func_t __func, int __descriptors)); +#else +# ifdef __REDIRECT +extern int __REDIRECT (ftw, __P ((__const char *__dir, __ftw_func_t __func, + int __descriptors)), ftw64); +# else +# define ftw ftw64 +# endif +#endif +#ifdef __USE_LARGEFILE64 +extern int ftw64 __P ((__const char *__dir, __ftw64_func_t __func, + int __descriptors)); +#endif + +#ifdef __USE_XOPEN_EXTENDED +/* Call a function on every element in a directory tree. FLAG allows + to specify the behaviour more detailed. */ +# ifndef __USE_FILE_OFFSET64 +extern int nftw __P ((__const char *__dir, __nftw_func_t __func, + int __descriptors, int __flag)); +# else +# ifdef __REDIRECT +extern int __REDIRECT (nftw, __P ((__const char *__dir, __nftw_func_t __func, + int __descriptors, int __flag)), nftw64); +# else +# define nftw nftw64 +# endif +# endif +# ifdef __USE_LARGEFILE64 +extern int nftw64 __P ((__const char *__dir, __nftw64_func_t __func, + int __descriptors, int __flag)); +# endif +#endif + +__END_DECLS #endif /* ftw.h */