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