Open SCAP Library
Loading...
Searching...
No Matches
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(OS_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(OS_SOLARIS)
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
84typedef struct {
85/*@owned@*/
86 struct _ftsent *fts_cur;
87/*@owned@*/ /*@null@*/
89/*@owned@*/ /*@null@*/
90 struct _ftsent **fts_array;
91 dev_t fts_dev;
92/*@owned@*/
93 char *fts_path;
94 int fts_rfd;
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
130} FTS;
131
132typedef struct _ftsent {
133/*@dependent@*/
135/*@dependent@*/
137/*@dependent@*/
141/*@dependent@*/
143/*@dependent@*/
144 char *fts_path;
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
191extern int dirfd (DIR * dirp);
192
199/*@unused@*/ /*@dependent@*/
200FTSENT *fts_children (FTS * sp, int instr) __THROW
201 /*@globals fileSystem, internalState @*/
202 /*@modifies *sp, fileSystem, internalState @*/;
203
209/*@unused@*/
210int fts_close (/*@only@*/ FTS * sp) __THROW
211 /*@globals fileSystem, internalState @*/
212 /*@modifies *sp, fileSystem, internalState @*/;
213
221/*@unused@*/ /*@only@*/
222FTS *fts_open (char * const * argv, int options,
223 /*@null@*/
224 int (*compar) (const FTSENT **, const FTSENT **)) __THROW
225 /*@*/;
226
232/*@unused@*/ /*@null@*/
233FTSENT *fts_read (FTS * sp) __THROW
234 /*@globals fileSystem, internalState @*/
235 /*@modifies *sp, fileSystem, internalState @*/;
236
244/*@unused@*/
245int 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(OS_SOLARIS)
253#include <fts.h>
254#endif /* defined(OS_SOLARIS) */
255
256#endif /* HAVE_FTS_OPEN */
Definition fts_sun.h:84
struct _ftsent * fts_cur
Definition fts_sun.h:86
int fts_rfd
Definition fts_sun.h:94
struct _ftsent ** fts_array
Definition fts_sun.h:90
struct _ftsent * fts_child
Definition fts_sun.h:88
dev_t fts_dev
Definition fts_sun.h:91
int fts_options
Definition fts_sun.h:129
char * fts_path
Definition fts_sun.h:93
int fts_pathlen
Definition fts_sun.h:95
int fts_nitems
Definition fts_sun.h:96
Definition fts_sun.h:132
char * fts_accpath
Definition fts_sun.h:142
dev_t fts_dev
Definition fts_sun.h:151
long fts_number
Definition fts_sun.h:139
nlink_t fts_nlink
Definition fts_sun.h:152
struct _ftsent * fts_link
Definition fts_sun.h:138
short fts_level
Definition fts_sun.h:156
struct _ftsent * fts_parent
Definition fts_sun.h:136
u_short fts_namelen
Definition fts_sun.h:148
ino_t fts_ino
Definition fts_sun.h:150
u_short fts_info
Definition fts_sun.h:172
char * fts_path
Definition fts_sun.h:144
char fts_name[1]
Definition fts_sun.h:186
u_short fts_instr
Definition fts_sun.h:182
u_short fts_pathlen
Definition fts_sun.h:147
struct _ftsent * fts_cycle
Definition fts_sun.h:134
struct stat * fts_statp
Definition fts_sun.h:185
int fts_errno
Definition fts_sun.h:145
int fts_symfd
Definition fts_sun.h:146
u_short fts_flags
Definition fts_sun.h:176
void * fts_pointer
Definition fts_sun.h:140