xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/ftw.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /* Copyright (C) 1992,1996-1999,2003,2004 Free Software Foundation, Inc.
2*53ee8cc1Swenshuai.xi    This file is part of the GNU C Library.
3*53ee8cc1Swenshuai.xi 
4*53ee8cc1Swenshuai.xi    The GNU C Library is free software; you can redistribute it and/or
5*53ee8cc1Swenshuai.xi    modify it under the terms of the GNU Lesser General Public
6*53ee8cc1Swenshuai.xi    License as published by the Free Software Foundation; either
7*53ee8cc1Swenshuai.xi    version 2.1 of the License, or (at your option) any later version.
8*53ee8cc1Swenshuai.xi 
9*53ee8cc1Swenshuai.xi    The GNU C Library is distributed in the hope that it will be useful,
10*53ee8cc1Swenshuai.xi    but WITHOUT ANY WARRANTY; without even the implied warranty of
11*53ee8cc1Swenshuai.xi    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12*53ee8cc1Swenshuai.xi    Lesser General Public License for more details.
13*53ee8cc1Swenshuai.xi 
14*53ee8cc1Swenshuai.xi    You should have received a copy of the GNU Lesser General Public
15*53ee8cc1Swenshuai.xi    License along with the GNU C Library; if not, write to the Free
16*53ee8cc1Swenshuai.xi    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17*53ee8cc1Swenshuai.xi    02111-1307 USA.  */
18*53ee8cc1Swenshuai.xi 
19*53ee8cc1Swenshuai.xi /*
20*53ee8cc1Swenshuai.xi  *	X/Open Portability Guide 4.2: ftw.h
21*53ee8cc1Swenshuai.xi  */
22*53ee8cc1Swenshuai.xi 
23*53ee8cc1Swenshuai.xi #ifndef _FTW_H
24*53ee8cc1Swenshuai.xi #define	_FTW_H	1
25*53ee8cc1Swenshuai.xi 
26*53ee8cc1Swenshuai.xi #include <features.h>
27*53ee8cc1Swenshuai.xi 
28*53ee8cc1Swenshuai.xi #include <sys/types.h>
29*53ee8cc1Swenshuai.xi #include <sys/stat.h>
30*53ee8cc1Swenshuai.xi 
31*53ee8cc1Swenshuai.xi 
32*53ee8cc1Swenshuai.xi __BEGIN_DECLS
33*53ee8cc1Swenshuai.xi 
34*53ee8cc1Swenshuai.xi /* Values for the FLAG argument to the user function passed to `ftw'
35*53ee8cc1Swenshuai.xi    and 'nftw'.  */
36*53ee8cc1Swenshuai.xi enum
37*53ee8cc1Swenshuai.xi {
38*53ee8cc1Swenshuai.xi   FTW_F,		/* Regular file.  */
39*53ee8cc1Swenshuai.xi #define FTW_F	 FTW_F
40*53ee8cc1Swenshuai.xi   FTW_D,		/* Directory.  */
41*53ee8cc1Swenshuai.xi #define FTW_D	 FTW_D
42*53ee8cc1Swenshuai.xi   FTW_DNR,		/* Unreadable directory.  */
43*53ee8cc1Swenshuai.xi #define FTW_DNR	 FTW_DNR
44*53ee8cc1Swenshuai.xi   FTW_NS,		/* Unstatable file.  */
45*53ee8cc1Swenshuai.xi #define FTW_NS	 FTW_NS
46*53ee8cc1Swenshuai.xi 
47*53ee8cc1Swenshuai.xi #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
48*53ee8cc1Swenshuai.xi 
49*53ee8cc1Swenshuai.xi   FTW_SL,		/* Symbolic link.  */
50*53ee8cc1Swenshuai.xi # define FTW_SL	 FTW_SL
51*53ee8cc1Swenshuai.xi #endif
52*53ee8cc1Swenshuai.xi 
53*53ee8cc1Swenshuai.xi #ifdef __USE_XOPEN_EXTENDED
54*53ee8cc1Swenshuai.xi /* These flags are only passed from the `nftw' function.  */
55*53ee8cc1Swenshuai.xi   FTW_DP,		/* Directory, all subdirs have been visited. */
56*53ee8cc1Swenshuai.xi # define FTW_DP	 FTW_DP
57*53ee8cc1Swenshuai.xi   FTW_SLN		/* Symbolic link naming non-existing file.  */
58*53ee8cc1Swenshuai.xi # define FTW_SLN FTW_SLN
59*53ee8cc1Swenshuai.xi 
60*53ee8cc1Swenshuai.xi #endif	/* extended X/Open */
61*53ee8cc1Swenshuai.xi };
62*53ee8cc1Swenshuai.xi 
63*53ee8cc1Swenshuai.xi 
64*53ee8cc1Swenshuai.xi #ifdef __USE_XOPEN_EXTENDED
65*53ee8cc1Swenshuai.xi /* Flags for fourth argument of `nftw'.  */
66*53ee8cc1Swenshuai.xi enum
67*53ee8cc1Swenshuai.xi {
68*53ee8cc1Swenshuai.xi   FTW_PHYS = 1,		/* Perform physical walk, ignore symlinks.  */
69*53ee8cc1Swenshuai.xi # define FTW_PHYS	FTW_PHYS
70*53ee8cc1Swenshuai.xi   FTW_MOUNT = 2,	/* Report only files on same file system as the
71*53ee8cc1Swenshuai.xi 			   argument.  */
72*53ee8cc1Swenshuai.xi # define FTW_MOUNT	FTW_MOUNT
73*53ee8cc1Swenshuai.xi   FTW_CHDIR = 4,	/* Change to current directory while processing it.  */
74*53ee8cc1Swenshuai.xi # define FTW_CHDIR	FTW_CHDIR
75*53ee8cc1Swenshuai.xi   FTW_DEPTH = 8		/* Report files in directory before directory itself.*/
76*53ee8cc1Swenshuai.xi # define FTW_DEPTH	FTW_DEPTH
77*53ee8cc1Swenshuai.xi # ifdef __USE_GNU
78*53ee8cc1Swenshuai.xi   ,
79*53ee8cc1Swenshuai.xi   FTW_ACTIONRETVAL = 16	/* Assume callback to return FTW_* values instead of
80*53ee8cc1Swenshuai.xi 			   zero to continue and non-zero to terminate.  */
81*53ee8cc1Swenshuai.xi #  define FTW_ACTIONRETVAL FTW_ACTIONRETVAL
82*53ee8cc1Swenshuai.xi # endif
83*53ee8cc1Swenshuai.xi };
84*53ee8cc1Swenshuai.xi 
85*53ee8cc1Swenshuai.xi #ifdef __USE_GNU
86*53ee8cc1Swenshuai.xi /* Return values from callback functions.  */
87*53ee8cc1Swenshuai.xi enum
88*53ee8cc1Swenshuai.xi {
89*53ee8cc1Swenshuai.xi   FTW_CONTINUE = 0,	/* Continue with next sibling or for FTW_D with the
90*53ee8cc1Swenshuai.xi 			   first child.  */
91*53ee8cc1Swenshuai.xi # define FTW_CONTINUE	FTW_CONTINUE
92*53ee8cc1Swenshuai.xi   FTW_STOP = 1,		/* Return from `ftw' or `nftw' with FTW_STOP as return
93*53ee8cc1Swenshuai.xi 			   value.  */
94*53ee8cc1Swenshuai.xi # define FTW_STOP	FTW_STOP
95*53ee8cc1Swenshuai.xi   FTW_SKIP_SUBTREE = 2,	/* Only meaningful for FTW_D: Don't walk through the
96*53ee8cc1Swenshuai.xi 			   subtree, instead just continue with its next
97*53ee8cc1Swenshuai.xi 			   sibling. */
98*53ee8cc1Swenshuai.xi # define FTW_SKIP_SUBTREE FTW_SKIP_SUBTREE
99*53ee8cc1Swenshuai.xi   FTW_SKIP_SIBLINGS = 3,/* Continue with FTW_DP callback for current directory
100*53ee8cc1Swenshuai.xi 			    (if FTW_DEPTH) and then its siblings.  */
101*53ee8cc1Swenshuai.xi # define FTW_SKIP_SIBLINGS FTW_SKIP_SIBLINGS
102*53ee8cc1Swenshuai.xi };
103*53ee8cc1Swenshuai.xi #endif
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi /* Structure used for fourth argument to callback function for `nftw'.  */
106*53ee8cc1Swenshuai.xi struct FTW
107*53ee8cc1Swenshuai.xi   {
108*53ee8cc1Swenshuai.xi     int base;
109*53ee8cc1Swenshuai.xi     int level;
110*53ee8cc1Swenshuai.xi   };
111*53ee8cc1Swenshuai.xi #endif	/* extended X/Open */
112*53ee8cc1Swenshuai.xi 
113*53ee8cc1Swenshuai.xi 
114*53ee8cc1Swenshuai.xi /* Convenient types for callback functions.  */
115*53ee8cc1Swenshuai.xi typedef int (*__ftw_func_t) (__const char *__filename,
116*53ee8cc1Swenshuai.xi 			     __const struct stat *__status, int __flag);
117*53ee8cc1Swenshuai.xi #ifdef __USE_LARGEFILE64
118*53ee8cc1Swenshuai.xi typedef int (*__ftw64_func_t) (__const char *__filename,
119*53ee8cc1Swenshuai.xi 			       __const struct stat64 *__status, int __flag);
120*53ee8cc1Swenshuai.xi #endif
121*53ee8cc1Swenshuai.xi #ifdef __USE_XOPEN_EXTENDED
122*53ee8cc1Swenshuai.xi typedef int (*__nftw_func_t) (__const char *__filename,
123*53ee8cc1Swenshuai.xi 			      __const struct stat *__status, int __flag,
124*53ee8cc1Swenshuai.xi 			      struct FTW *__info);
125*53ee8cc1Swenshuai.xi # ifdef __USE_LARGEFILE64
126*53ee8cc1Swenshuai.xi typedef int (*__nftw64_func_t) (__const char *__filename,
127*53ee8cc1Swenshuai.xi 				__const struct stat64 *__status,
128*53ee8cc1Swenshuai.xi 				int __flag, struct FTW *__info);
129*53ee8cc1Swenshuai.xi # endif
130*53ee8cc1Swenshuai.xi #endif
131*53ee8cc1Swenshuai.xi 
132*53ee8cc1Swenshuai.xi /* Call a function on every element in a directory tree.
133*53ee8cc1Swenshuai.xi 
134*53ee8cc1Swenshuai.xi    This function is a possible cancellation point and therefore not
135*53ee8cc1Swenshuai.xi    marked with __THROW.  */
136*53ee8cc1Swenshuai.xi #ifndef __USE_FILE_OFFSET64
137*53ee8cc1Swenshuai.xi extern int ftw (__const char *__dir, __ftw_func_t __func, int __descriptors)
138*53ee8cc1Swenshuai.xi      __nonnull ((1, 2));
139*53ee8cc1Swenshuai.xi #else
140*53ee8cc1Swenshuai.xi # ifdef __REDIRECT
141*53ee8cc1Swenshuai.xi extern int __REDIRECT (ftw, (__const char *__dir, __ftw_func_t __func,
142*53ee8cc1Swenshuai.xi 			     int __descriptors), ftw64) __nonnull ((1, 2));
143*53ee8cc1Swenshuai.xi # else
144*53ee8cc1Swenshuai.xi #  define ftw ftw64
145*53ee8cc1Swenshuai.xi # endif
146*53ee8cc1Swenshuai.xi #endif
147*53ee8cc1Swenshuai.xi #ifdef __USE_LARGEFILE64
148*53ee8cc1Swenshuai.xi extern int ftw64 (__const char *__dir, __ftw64_func_t __func,
149*53ee8cc1Swenshuai.xi 		  int __descriptors) __nonnull ((1, 2));
150*53ee8cc1Swenshuai.xi #endif
151*53ee8cc1Swenshuai.xi 
152*53ee8cc1Swenshuai.xi #ifdef __USE_XOPEN_EXTENDED
153*53ee8cc1Swenshuai.xi /* Call a function on every element in a directory tree.  FLAG allows
154*53ee8cc1Swenshuai.xi    to specify the behaviour more detailed.
155*53ee8cc1Swenshuai.xi 
156*53ee8cc1Swenshuai.xi    This function is a possible cancellation point and therefore not
157*53ee8cc1Swenshuai.xi    marked with __THROW.  */
158*53ee8cc1Swenshuai.xi # ifndef __USE_FILE_OFFSET64
159*53ee8cc1Swenshuai.xi extern int nftw (__const char *__dir, __nftw_func_t __func, int __descriptors,
160*53ee8cc1Swenshuai.xi 		 int __flag) __nonnull ((1, 2));
161*53ee8cc1Swenshuai.xi # else
162*53ee8cc1Swenshuai.xi #  ifdef __REDIRECT
163*53ee8cc1Swenshuai.xi extern int __REDIRECT (nftw, (__const char *__dir, __nftw_func_t __func,
164*53ee8cc1Swenshuai.xi 			      int __descriptors, int __flag), nftw64)
165*53ee8cc1Swenshuai.xi      __nonnull ((1, 2));
166*53ee8cc1Swenshuai.xi #  else
167*53ee8cc1Swenshuai.xi #   define nftw nftw64
168*53ee8cc1Swenshuai.xi #  endif
169*53ee8cc1Swenshuai.xi # endif
170*53ee8cc1Swenshuai.xi # ifdef __USE_LARGEFILE64
171*53ee8cc1Swenshuai.xi extern int nftw64 (__const char *__dir, __nftw64_func_t __func,
172*53ee8cc1Swenshuai.xi 		   int __descriptors, int __flag) __nonnull ((1, 2));
173*53ee8cc1Swenshuai.xi # endif
174*53ee8cc1Swenshuai.xi #endif
175*53ee8cc1Swenshuai.xi 
176*53ee8cc1Swenshuai.xi __END_DECLS
177*53ee8cc1Swenshuai.xi 
178*53ee8cc1Swenshuai.xi #endif	/* ftw.h */
179