Open SCAP Library
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
fts_sun.h
1 /*
2  * Copyright (c) 1989, 1993
3  * The Regents of the University of California. 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  * 4. Neither the name of the University nor the names of its 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 REGENTS 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 REGENTS 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  * @(#)fts.h 8.3 (Berkeley) 8/14/94
30  */
31 
32 #include "config.h"
33 
34 #if !defined(HAVE_FTS_OPEN)
35 
36 #ifndef _FTS_H
37 #define _FTS_H 1
38 
39 
40 #if defined(__GLIBC__)
41 #include <features.h>
42 #else
43 
44 # define __THROW
45 #ifdef __cplusplus
46 # define __BEGIN_DECLS extern "C" {
47 # define __END_DECLS }
48 #else
49 # define __BEGIN_DECLS
50 # define __END_DECLS
51 #endif
52 
53 #if defined(hpux)
54 # define _D_EXACT_NAMLEN(d) ((d)->d_namlen)
55 # define _INCLUDE_POSIX_SOURCE
56 # define _LARGEFILE64_SOURCE
57 #endif
58 
59 /* This needs to be ifdef SOLARIS */
60 #if defined(__SVR4)
61 # define _D_EXACT_NAMLEN(d) (strlen((d)->d_name))
62 # ifndef _INCLUDE_POSIX_SOURCE
63 # define _INCLUDE_POSIX_SOURCE
64 # endif
65 # ifndef _LARGEFILE64_SOURCE
66 # define _LARGEFILE64_SOURCE
67 # endif
68 #endif
69 
70 #endif
71 
72 #include <sys/types.h>
73 #include <sys/stat.h>
74 #include <dirent.h>
75 
76 /* The fts interface is incompatible with the LFS interface which
77  transparently uses the 64-bit file access functions. */
78 
79 #ifdef __USE_FILE_OFFSET64
80 # error "<fts.h> cannot be used with -D_FILE_OFFSET_BITS==64"
81 #endif
82 
83 
84 typedef struct {
85 /*@owned@*/
86  struct _ftsent *fts_cur;
87 /*@owned@*/ /*@null@*/
88  struct _ftsent *fts_child;
89 /*@owned@*/ /*@null@*/
90  struct _ftsent **fts_array;
91  dev_t fts_dev;
92 /*@owned@*/
93  char *fts_path;
94  int fts_rfd;
96  int fts_nitems;
97 /*@null@*/
98  int (*fts_compar) (const void *, const void *)
99  /*@*/;
101  DIR * (*fts_opendir) (const char * path)
102  /*@globals fileSystem @*/
103  /*@modifies fileSystem @*/;
104  struct dirent * (*fts_readdir) (DIR * dir)
105  /*@globals fileSystem @*/
106  /*@modifies *dir, fileSystem @*/;
107  int (*fts_closedir) (/*@only@*/ DIR * dir)
108  /*@globals fileSystem @*/
109  /*@modifies *dir, fileSystem @*/;
110  int (*fts_stat) (const char * path, /*@out@*/ struct stat * st)
111  /*@globals fileSystem @*/
112  /*@modifies *st, fileSystem @*/;
113  int (*fts_lstat) (const char * path, /*@out@*/ struct stat * st)
114  /*@globals fileSystem @*/
115  /*@modifies *st, fileSystem @*/;
116 
117 #define FTS_COMFOLLOW 0x0001
118 #define FTS_LOGICAL 0x0002
119 #define FTS_NOCHDIR 0x0004
120 #define FTS_NOSTAT 0x0008
121 #define FTS_PHYSICAL 0x0010
122 #define FTS_SEEDOT 0x0020
123 #define FTS_XDEV 0x0040
124 #define FTS_WHITEOUT 0x0080
125 #define FTS_OPTIONMASK 0x00ff
127 #define FTS_NAMEONLY 0x0100
128 #define FTS_STOP 0x0200
129  int fts_options;
130 } FTS;
131 
132 typedef struct _ftsent {
133 /*@dependent@*/
134  struct _ftsent *fts_cycle;
135 /*@dependent@*/
136  struct _ftsent *fts_parent;
137 /*@dependent@*/
138  struct _ftsent *fts_link;
139  long fts_number;
140  void *fts_pointer;
141 /*@dependent@*/
142  char *fts_accpath;
143 /*@dependent@*/
144  char *fts_path;
145  int fts_errno;
146  int fts_symfd;
147  u_short fts_pathlen;
148  u_short fts_namelen;
150  ino_t fts_ino;
151  dev_t fts_dev;
152  nlink_t fts_nlink;
154 #define FTS_ROOTPARENTLEVEL -1
155 #define FTS_ROOTLEVEL 0
156  short fts_level;
158 #define FTS_D 1
159 #define FTS_DC 2
160 #define FTS_DEFAULT 3
161 #define FTS_DNR 4
162 #define FTS_DOT 5
163 #define FTS_DP 6
164 #define FTS_ERR 7
165 #define FTS_F 8
166 #define FTS_INIT 9
167 #define FTS_NS 10
168 #define FTS_NSOK 11
169 #define FTS_SL 12
170 #define FTS_SLNONE 13
171 #define FTS_W 14
172  u_short fts_info;
174 #define FTS_DONTCHDIR 0x01
175 #define FTS_SYMFOLLOW 0x02
176  u_short fts_flags;
178 #define FTS_AGAIN 1
179 #define FTS_FOLLOW 2
180 #define FTS_NOINSTR 3
181 #define FTS_SKIP 4
182  u_short fts_instr;
184 /*@dependent@*/
185  struct stat *fts_statp;
186  char fts_name[1];
187 } FTSENT;
188 
189 __BEGIN_DECLS
190 
191 extern int dirfd (DIR * dirp);
192 
199 /*@unused@*/ /*@dependent@*/
200 FTSENT *fts_children (FTS * sp, int instr) __THROW
201  /*@globals fileSystem, internalState @*/
202  /*@modifies *sp, fileSystem, internalState @*/;
203 
209 /*@unused@*/
210 int fts_close (/*@only@*/ FTS * sp) __THROW
211  /*@globals fileSystem, internalState @*/
212  /*@modifies *sp, fileSystem, internalState @*/;
213 
221 /*@unused@*/ /*@only@*/
222 FTS *fts_open (char * const * argv, int options,
223  /*@null@*/
224  int (*compar) (const FTSENT **, const FTSENT **)) __THROW
225  /*@*/;
226 
232 /*@unused@*/ /*@null@*/
233 FTSENT *fts_read (FTS * sp) __THROW
234  /*@globals fileSystem, internalState @*/
235  /*@modifies *sp, fileSystem, internalState @*/;
236 
244 /*@unused@*/
245 int fts_set (FTS * sp, FTSENT * p, int instr) __THROW
246  /*@modifies *p @*/;
247 
248 __END_DECLS
249 
250 #endif /* fts.h */
251 #else
252 #if defined(__SVR4) && defined(__sun)
253 #include <fts.h>
254 #endif /* defined(__SVR4) && defined(__sun) */
255 
256 #endif /* HAVE_FTS_OPEN */
struct _ftsent * fts_cycle
Definition: fts_sun.h:134
void * fts_pointer
Definition: fts_sun.h:140
dev_t fts_dev
Definition: fts_sun.h:151
struct _ftsent * fts_parent
Definition: fts_sun.h:136
u_short fts_namelen
Definition: fts_sun.h:148
short fts_level
Definition: fts_sun.h:156
int fts_symfd
Definition: fts_sun.h:146
int fts_rfd
Definition: fts_sun.h:94
ino_t fts_ino
Definition: fts_sun.h:150
char * fts_path
Definition: fts_sun.h:93
int fts_nitems
Definition: fts_sun.h:96
char * fts_path
Definition: fts_sun.h:144
Definition: fts_sun.h:84
char * fts_accpath
Definition: fts_sun.h:142
char fts_name[1]
Definition: fts_sun.h:186
Definition: fts_sun.h:132
struct stat * fts_statp
Definition: fts_sun.h:185
int fts_errno
Definition: fts_sun.h:145
nlink_t fts_nlink
Definition: fts_sun.h:152
dev_t fts_dev
Definition: fts_sun.h:91
struct _ftsent * fts_cur
Definition: fts_sun.h:86
struct _ftsent * fts_child
Definition: fts_sun.h:88
struct _ftsent ** fts_array
Definition: fts_sun.h:90
long fts_number
Definition: fts_sun.h:139
u_short fts_pathlen
Definition: fts_sun.h:147
struct _ftsent * fts_link
Definition: fts_sun.h:138
int fts_pathlen
Definition: fts_sun.h:95