]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - include/ftw.h
This commit was generated by cvs2svn to compensate for changes in r132943,
[FreeBSD/FreeBSD.git] / include / ftw.h
1 /*
2  * Copyright (c) 2003 by Joel Baker.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the Author nor the names of any contributors
14  *    may be used to endorse or promote products derived from this software
15  *    without specific prior written permission.
16  * 
17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  * SUCH DAMAGE.
28  *
29  * $FreeBSD$
30  */
31
32 #ifndef _FTW_H
33 #define _FTW_H
34
35 #include <sys/stat.h>
36
37 __BEGIN_DECLS
38
39 /* Enumerated values for 'flag' when calling [n]ftw */
40
41 enum {
42     FTW_D,   /* Directories */
43     FTW_DNR, /* Unreadable directory */
44     FTW_F,   /* Regular files */
45     FTW_SL,  /* Symbolic link */
46     FTW_NS,  /* stat(2) failed */
47
48 #if __XSI_VISIBLE /* X/Open */
49
50 /* Flags for nftw only */
51
52     FTW_DP, /* Directory, subdirs visited */
53     FTW_SLN, /* Dangling symlink */
54
55 #endif /* __XSI_VISIBLE */
56 };
57
58 #if __XSI_VISIBLE /* X/Open */
59
60 /* Enumerated values for 'flags' when calling nftw */
61
62 enum {
63     FTW_CHDIR = 1, /* Do a chdir(2) when entering a directory */
64     FTW_DEPTH = 2, /* Report files first (before directory) */
65     FTW_MOUNT = 4, /* Single filesystem */
66     FTW_PHYS  = 8  /* Physical walk; ignore symlinks */
67 };
68
69 #define FTW_PHYS FTW_PHYS
70 #define FTW_MOUNT FTW_MOUNT
71 #define FTW_CHDIR FTW_CHDIR
72 #define FTW_DEPTH FTW_DEPTH
73
74 /* FTW struct for callbacks from nftw */
75
76 struct FTW {
77     int base;
78     int level;
79 };
80
81 #endif /* __XSI_VISIBLE */
82
83 /* Typecasts for callback functions */
84
85 typedef int (*__ftw_func_t) \
86     (const char *file, const struct stat *status, int flag);
87
88 /* ftw: walk a directory tree, calling a function for each element */
89
90 extern int ftw (const char *dir, __ftw_func_t func, int descr);
91
92 #if __XSI_VISIBLE /* X/Open */
93
94 typedef int (*__nftw_func_t) \
95     (const char *file, const struct stat *status, int flag, struct FTW *detail);
96
97 /* nftw: walk a directory tree, calling a function for each element; much
98  * like ftw, but with behavior flags and minty freshness.
99  */
100
101 extern int nftw (const char *dir, __nftw_func_t func, int descr, int flags);
102
103 #endif /* __XSI_VISIBLE */
104
105 __END_DECLS
106
107 #endif /* _FTW_H */