1*b30d1939SAndy Fiddaman /***********************************************************************
2*b30d1939SAndy Fiddaman *                                                                      *
3*b30d1939SAndy Fiddaman *               This software is part of the ast package               *
4*b30d1939SAndy Fiddaman *          Copyright (c) 1985-2011 AT&T Intellectual Property          *
5*b30d1939SAndy Fiddaman *                      and is licensed under the                       *
6*b30d1939SAndy Fiddaman *                 Eclipse Public License, Version 1.0                  *
7*b30d1939SAndy Fiddaman *                    by AT&T Intellectual Property                     *
8*b30d1939SAndy Fiddaman *                                                                      *
9*b30d1939SAndy Fiddaman *                A copy of the License is available at                 *
10*b30d1939SAndy Fiddaman *          http://www.eclipse.org/org/documents/epl-v10.html           *
11*b30d1939SAndy Fiddaman *         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
12*b30d1939SAndy Fiddaman *                                                                      *
13*b30d1939SAndy Fiddaman *              Information and Software Systems Research               *
14*b30d1939SAndy Fiddaman *                            AT&T Research                             *
15*b30d1939SAndy Fiddaman *                           Florham Park NJ                            *
16*b30d1939SAndy Fiddaman *                                                                      *
17*b30d1939SAndy Fiddaman *                 Glenn Fowler <gsf@research.att.com>                  *
18*b30d1939SAndy Fiddaman *                  David Korn <dgk@research.att.com>                   *
19*b30d1939SAndy Fiddaman *                   Phong Vo <kpv@research.att.com>                    *
20*b30d1939SAndy Fiddaman *                                                                      *
21*b30d1939SAndy Fiddaman ***********************************************************************/
22*b30d1939SAndy Fiddaman #pragma prototyped
23*b30d1939SAndy Fiddaman /*
24*b30d1939SAndy Fiddaman  * Phong Vo
25*b30d1939SAndy Fiddaman  * Glenn Fowler
26*b30d1939SAndy Fiddaman  * AT&T Research
27*b30d1939SAndy Fiddaman  *
28*b30d1939SAndy Fiddaman  * ast ftwalk interface definitions
29*b30d1939SAndy Fiddaman  * ftwalk was the initial improvement on ftw and nftw
30*b30d1939SAndy Fiddaman  * which formed the basis for the POSIX fts proposal
31*b30d1939SAndy Fiddaman  *
32*b30d1939SAndy Fiddaman  * NOTE: this file is in cahoots with the fts implementation
33*b30d1939SAndy Fiddaman  */
34*b30d1939SAndy Fiddaman 
35*b30d1939SAndy Fiddaman #ifndef _FTWALK_H
36*b30d1939SAndy Fiddaman #define _FTWALK_H
37*b30d1939SAndy Fiddaman 
38*b30d1939SAndy Fiddaman #define fts_info	info
39*b30d1939SAndy Fiddaman #define fts_level	level
40*b30d1939SAndy Fiddaman #define fts_link	link
41*b30d1939SAndy Fiddaman #define fts_name	name
42*b30d1939SAndy Fiddaman #define fts_namelen	namelen
43*b30d1939SAndy Fiddaman #define fts_parent	parent
44*b30d1939SAndy Fiddaman #define fts_path	path
45*b30d1939SAndy Fiddaman #define fts_pathlen	pathlen
46*b30d1939SAndy Fiddaman #define _fts_status	status
47*b30d1939SAndy Fiddaman #define _fts_statb	statb
48*b30d1939SAndy Fiddaman 
49*b30d1939SAndy Fiddaman #define FTSENT		Ftw_t			/* <fts.h> internal	*/
50*b30d1939SAndy Fiddaman #define Ftsent		FTW			/* <fts.h> internal	*/
51*b30d1939SAndy Fiddaman 
52*b30d1939SAndy Fiddaman #define _FTSENT_LOCAL_PRIVATE_			/* <fts.h> internal	*/ \
53*b30d1939SAndy Fiddaman 	union								   \
54*b30d1939SAndy Fiddaman 	{								   \
55*b30d1939SAndy Fiddaman 	long		number;			/* local numeric value	*/ \
56*b30d1939SAndy Fiddaman 	void*		pointer;		/* local pointer value	*/ \
57*b30d1939SAndy Fiddaman 	}		local;
58*b30d1939SAndy Fiddaman 
59*b30d1939SAndy Fiddaman #include <fts.h>
60*b30d1939SAndy Fiddaman 
61*b30d1939SAndy Fiddaman /*
62*b30d1939SAndy Fiddaman  * ftwalk() argument flags
63*b30d1939SAndy Fiddaman  */
64*b30d1939SAndy Fiddaman 
65*b30d1939SAndy Fiddaman #define FTW_CANON	FTS_CANON
66*b30d1939SAndy Fiddaman #define FTW_CHILDREN	(FTS_USER<<0)
67*b30d1939SAndy Fiddaman #define FTW_DELAY	FTS_NOSTAT
68*b30d1939SAndy Fiddaman #define FTW_DOT		FTS_NOCHDIR
69*b30d1939SAndy Fiddaman #define FTW_META	FTS_META
70*b30d1939SAndy Fiddaman #define FTW_MOUNT	FTS_XDEV
71*b30d1939SAndy Fiddaman #define FTW_MULTIPLE	FTS_ONEPATH
72*b30d1939SAndy Fiddaman #define FTW_NOSEEDOTDIR	FTS_NOSEEDOTDIR
73*b30d1939SAndy Fiddaman #define FTW_PHYSICAL	FTS_PHYSICAL
74*b30d1939SAndy Fiddaman #define FTW_POST	(FTS_USER<<1)
75*b30d1939SAndy Fiddaman #define FTW_SEEDOTDIR	FTS_SEEDOTDIR
76*b30d1939SAndy Fiddaman #define FTW_TOP		FTS_TOP
77*b30d1939SAndy Fiddaman #define FTW_TWICE	(FTS_USER<<2)
78*b30d1939SAndy Fiddaman #define FTW_USER	(FTS_USER<<3)
79*b30d1939SAndy Fiddaman 
80*b30d1939SAndy Fiddaman /*
81*b30d1939SAndy Fiddaman  * Ftw_t.info type bits
82*b30d1939SAndy Fiddaman  */
83*b30d1939SAndy Fiddaman 
84*b30d1939SAndy Fiddaman #define FTW_C		FTS_C
85*b30d1939SAndy Fiddaman #define FTW_D		FTS_D
86*b30d1939SAndy Fiddaman #define FTW_DC		FTS_DC
87*b30d1939SAndy Fiddaman #define FTW_DNR		FTS_DNR
88*b30d1939SAndy Fiddaman #define FTW_DNX		FTS_DNX
89*b30d1939SAndy Fiddaman #define FTW_DP		FTS_DP
90*b30d1939SAndy Fiddaman #define FTW_F		FTS_F
91*b30d1939SAndy Fiddaman #define FTW_NR		FTS_NR
92*b30d1939SAndy Fiddaman #define FTW_NS		FTS_NS
93*b30d1939SAndy Fiddaman #define FTW_NSOK	FTS_NSOK
94*b30d1939SAndy Fiddaman #define FTW_NX		FTS_NX
95*b30d1939SAndy Fiddaman #define FTW_P		FTS_P
96*b30d1939SAndy Fiddaman #define FTW_SL		FTS_SL
97*b30d1939SAndy Fiddaman 
98*b30d1939SAndy Fiddaman /*
99*b30d1939SAndy Fiddaman  * Ftw_t.status entry values
100*b30d1939SAndy Fiddaman  */
101*b30d1939SAndy Fiddaman 
102*b30d1939SAndy Fiddaman #define FTW_NAME	FTS_DOT		/* access by Ftw_t.name		*/
103*b30d1939SAndy Fiddaman #define FTW_PATH	FTS_NOCHDIR	/* access by Ftw_t.path		*/
104*b30d1939SAndy Fiddaman 
105*b30d1939SAndy Fiddaman /*
106*b30d1939SAndy Fiddaman  * Ftw_t.status return values
107*b30d1939SAndy Fiddaman  */
108*b30d1939SAndy Fiddaman 
109*b30d1939SAndy Fiddaman #define FTW_AGAIN	FTS_AGAIN
110*b30d1939SAndy Fiddaman #define FTW_FOLLOW	FTS_FOLLOW
111*b30d1939SAndy Fiddaman #define FTW_NOPOST	FTS_NOPOSTORDER
112*b30d1939SAndy Fiddaman #define FTW_SKIP	FTS_SKIP
113*b30d1939SAndy Fiddaman #define FTW_STAT	FTS_STAT
114*b30d1939SAndy Fiddaman 
115*b30d1939SAndy Fiddaman #if _BLD_ast && defined(__EXPORT__)
116*b30d1939SAndy Fiddaman #define extern		__EXPORT__
117*b30d1939SAndy Fiddaman #endif
118*b30d1939SAndy Fiddaman 
119*b30d1939SAndy Fiddaman extern int	ftwalk(const char*, int(*)(Ftw_t*), int, int(*)(Ftw_t*, Ftw_t*));
120*b30d1939SAndy Fiddaman extern int	ftwflags(void);
121*b30d1939SAndy Fiddaman 
122*b30d1939SAndy Fiddaman #undef	extern
123*b30d1939SAndy Fiddaman 
124*b30d1939SAndy Fiddaman #endif
125