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