Print this page
reorder rewinddir prototype/define
Build fixes.
opendir, dirfd are in XPG7
alphasort and scandir are new in XPG7
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/head/dirent.h
+++ new/usr/src/head/dirent.h
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License (the "License").
6 6 * You may not use this file except in compliance with the License.
7 7 *
8 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 9 * or http://www.opensolaris.org/os/licensing.
10 10 * See the License for the specific language governing permissions
11 11 * and limitations under the License.
12 12 *
13 13 * When distributing Covered Code, include this CDDL HEADER in each
14 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 15 * If applicable, add the following below this CDDL HEADER, with the
16 16 * fields enclosed by brackets "[]" replaced with your own identifying
↓ open down ↓ |
16 lines elided |
↑ open up ↑ |
17 17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 18 *
19 19 * CDDL HEADER END
20 20 */
21 21
22 22 /*
23 23 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
24 24 * Use is subject to license terms.
25 25 */
26 26
27 +/*
28 + * Copyright 2014 Garrett D'Amore <garrett@damore.org>
29 + */
30 +
27 31 /* Copyright (c) 1988 AT&T */
28 32 /* All Rights Reserved */
29 33
30 34 #ifndef _DIRENT_H
31 35 #define _DIRENT_H
32 36
33 -#pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.6.1.5 */
34 -
35 37 #include <sys/feature_tests.h>
36 38
37 39 #include <sys/types.h>
38 40 #include <sys/dirent.h>
39 41
40 42 #ifdef __cplusplus
41 43 extern "C" {
42 44 #endif
43 45
44 -#if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX)
45 -
46 +#if !defined(_STRICT_SYMBOLS)
46 47 #define MAXNAMLEN 512 /* maximum filename length */
47 48 #define DIRBUF 8192 /* buffer size for fs-indep. dirs */
49 +#endif
48 50
49 -#endif /* defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) */
50 -
51 51 #if !defined(__XOPEN_OR_POSIX)
52 52
53 53 typedef struct {
54 54 int dd_fd; /* file descriptor */
55 55 int dd_loc; /* offset in block */
56 56 int dd_size; /* amount of valid data */
57 57 char *dd_buf; /* directory block */
58 58 } DIR; /* stream data from opendir() */
59 59
60 60
61 61 #else
↓ open down ↓ |
1 lines elided |
↑ open up ↑ |
62 62
63 63 typedef struct {
64 64 int d_fd; /* file descriptor */
65 65 int d_loc; /* offset in block */
66 66 int d_size; /* amount of valid data */
67 67 char *d_buf; /* directory block */
68 68 } DIR; /* stream data from opendir() */
69 69
70 70 #endif /* !defined(__XOPEN_OR_POSIX) */
71 71
72 -#if defined(__STDC__)
73 -
74 72 /* large file compilation environment setup */
75 73 #if !defined(_LP64) && _FILE_OFFSET_BITS == 64
76 74 #ifdef __PRAGMA_REDEFINE_EXTNAME
77 75 #pragma redefine_extname readdir readdir64
78 76 #pragma redefine_extname scandir scandir64
79 77 #pragma redefine_extname alphasort alphasort64
80 78 #else
81 79 #define readdir readdir64
82 80 #define scandir scandir64
83 81 #define alphasort alphasort64
84 82 #endif
85 83 #endif /* _FILE_OFFSET_BITS == 64 */
86 84
87 85 /* In the LP64 compilation environment, all APIs are already large file */
88 86 #if defined(_LP64) && defined(_LARGEFILE64_SOURCE)
89 87 #ifdef __PRAGMA_REDEFINE_EXTNAME
90 88 #pragma redefine_extname readdir64 readdir
↓ open down ↓ |
7 lines elided |
↑ open up ↑ |
91 89 #pragma redefine_extname scandir64 scandir
92 90 #pragma redefine_extname alphasort64 alphasort
93 91 #else
94 92 #define readdir64 readdir
95 93 #define scandir64 scandir
96 94 #define alphsort64 alphasort
97 95 #endif
98 96 #endif /* _LP64 && _LARGEFILE64_SOURCE */
99 97
100 98 extern DIR *opendir(const char *);
101 -#if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) || \
102 - defined(_ATFILE_SOURCE)
99 +#if defined(_XPG7) || defined(_ATFILE_SOURCE) || !defined(_STRICT_SYMBOLS)
103 100 extern DIR *fdopendir(int);
104 101 extern int dirfd(DIR *);
105 -#endif /* defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) ... */
106 -#if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX)
107 -extern int scandir(const char *, struct dirent *(*[]),
102 +#endif
103 +
104 +#if defined(_XPG7) || !defined(_STRICT_SYMBOLS)
105 +extern int scandir(const char *, struct dirent ***,
108 106 int (*)(const struct dirent *),
109 107 int (*)(const struct dirent **,
110 108 const struct dirent **));
111 109 extern int alphasort(const struct dirent **,
112 110 const struct dirent **);
113 -#endif /* defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) */
111 +#endif
112 +
114 113 extern struct dirent *readdir(DIR *);
115 -#if defined(__EXTENSIONS__) || !defined(_POSIX_C_SOURCE) || \
116 - defined(_XOPEN_SOURCE)
117 -extern long telldir(DIR *);
118 -extern void seekdir(DIR *, long);
119 -#endif /* defined(__EXTENSIONS__) || !defined(_POSIX_C_SOURCE) ... */
120 114 extern void rewinddir(DIR *);
121 115 extern int closedir(DIR *);
122 116
117 +#if defined(_XOPEN_SOURCE) || !defined(_STRICT_SYMBOLS)
118 +extern long telldir(DIR *);
119 +extern void seekdir(DIR *, long);
120 +#define rewinddir(dirp) seekdir(dirp, 0L)
121 +#endif
122 +
123 123 /* transitional large file interface */
124 124 #if defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \
125 125 !defined(__PRAGMA_REDEFINE_EXTNAME))
126 126 extern struct dirent64 *readdir64(DIR *);
127 -#if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX)
128 -extern int scandir64(const char *, struct dirent64 *(*[]),
127 +#if !defined(_STRICT_SYMBOLS)
128 +extern int scandir64(const char *, struct dirent64 ***,
129 129 int (*)(const struct dirent64 *),
130 130 int (*)(const struct dirent64 **,
131 131 const struct dirent64 **));
132 132 extern int alphasort64(const struct dirent64 **, const struct dirent64 **);
133 -#endif /* defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) */
133 +#endif /* !_STRICT_SYMBOLS */
134 134 #endif
135 135
136 -#else
137 -
138 -extern DIR *opendir();
139 -#if defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) || \
140 - defined(_ATFILE_SOURCE)
141 -extern DIR *fdopendir();
142 -extern int dirfd();
143 -#endif /* defined(__EXTENSIONS__) || !defined(__XOPEN_OR_POSIX) ... */
144 -extern struct dirent *readdir();
145 -#if defined(__EXTENSIONS__) || !defined(_POSIX_C_SOURCE) || \
146 - defined(_XOPEN_SOURCE)
147 -extern long telldir();
148 -extern void seekdir();
149 -#endif /* defined(__EXTENSIONS__) || !defined(_POSIX_C_SOURCE) ... */
150 -extern void rewinddir();
151 -extern int closedir();
152 -
153 -/* transitional large file interface */
154 -#if defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \
155 - !defined(__PRAGMA_REDEFINE_EXTNAME))
156 -extern struct dirent64 *readdir64();
157 -#endif
158 -
159 -#endif
160 -
161 -#if defined(__EXTENSIONS__) || !defined(_POSIX_C_SOURCE) || \
162 - defined(_XOPEN_SOURCE)
163 -#define rewinddir(dirp) seekdir(dirp, 0L)
164 -#endif
165 -
166 136 /*
167 137 * readdir_r() prototype is defined here.
168 138 *
169 139 * There are several variations, depending on whether compatibility with old
170 140 * POSIX draft specifications or the final specification is desired and on
171 141 * whether the large file compilation environment is active. To combat a
172 142 * combinatorial explosion, enabling large files implies using the final
173 143 * specification (since the definition of the large file environment
174 144 * considerably postdates that of the final readdir_r specification).
175 145 *
176 146 * In the LP64 compilation environment, all APIs are already large file,
177 147 * and since there are no 64-bit applications that can have seen the
178 148 * draft implementation, again, we use the final POSIX specification.
179 149 */
180 150
181 151 #if defined(__EXTENSIONS__) || defined(_REENTRANT) || \
182 152 !defined(__XOPEN_OR_POSIX) || (_POSIX_C_SOURCE - 0 >= 199506L) || \
183 153 defined(_POSIX_PTHREAD_SEMANTICS)
184 154
185 -#if defined(__STDC__)
186 -
187 155 #if !defined(_LP64) && _FILE_OFFSET_BITS == 32
188 156
189 157 #if (_POSIX_C_SOURCE - 0 >= 199506L) || defined(_POSIX_PTHREAD_SEMANTICS)
190 158
191 159 #ifdef __PRAGMA_REDEFINE_EXTNAME
192 160 #pragma redefine_extname readdir_r __posix_readdir_r
193 161 extern int readdir_r(DIR *_RESTRICT_KYWD, struct dirent *_RESTRICT_KYWD,
194 162 struct dirent **_RESTRICT_KYWD);
195 163 #else /* __PRAGMA_REDEFINE_EXTNAME */
196 164
197 165 extern int __posix_readdir_r(DIR *_RESTRICT_KYWD,
198 166 struct dirent *_RESTRICT_KYWD, struct dirent **_RESTRICT_KYWD);
199 167
200 168 #ifdef __lint
201 169 #define readdir_r __posix_readdir_r
202 170 #else /* !__lint */
203 171
204 172 static int
205 173 readdir_r(DIR *_RESTRICT_KYWD __dp, struct dirent *_RESTRICT_KYWD __ent,
206 174 struct dirent **_RESTRICT_KYWD __res) {
207 175 return (__posix_readdir_r(__dp, __ent, __res));
208 176 }
209 177
210 178 #endif /* !__lint */
211 179 #endif /* __PRAGMA_REDEFINE_EXTNAME */
212 180
213 181 #else /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
214 182
215 183 extern struct dirent *readdir_r(DIR *__dp, struct dirent *__ent);
216 184
217 185 #endif /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
218 186
219 187 #else /* !_LP64 && _FILE_OFFSET_BITS == 32 */
220 188
221 189 #if defined(_LP64)
222 190 #ifdef __PRAGMA_REDEFINE_EXTNAME
223 191 #pragma redefine_extname readdir64_r readdir_r
224 192 #else
225 193 #define readdir64_r readdir_r
226 194 #endif
227 195 #else /* _LP64 */
228 196 #ifdef __PRAGMA_REDEFINE_EXTNAME
229 197 #pragma redefine_extname readdir_r readdir64_r
230 198 #else
231 199 #define readdir_r readdir64_r
232 200 #endif
233 201 #endif /* _LP64 */
234 202 extern int readdir_r(DIR *_RESTRICT_KYWD, struct dirent *_RESTRICT_KYWD,
235 203 struct dirent **_RESTRICT_KYWD);
↓ open down ↓ |
39 lines elided |
↑ open up ↑ |
236 204
237 205 #endif /* !_LP64 && _FILE_OFFSET_BITS == 32 */
238 206
239 207 #if defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \
240 208 !defined(__PRAGMA_REDEFINE_EXTNAME))
241 209 /* transitional large file interface */
242 210 extern int readdir64_r(DIR *_RESTRICT_KYWD, struct dirent64 *_RESTRICT_KYWD,
243 211 struct dirent64 **_RESTRICT_KYWD);
244 212 #endif
245 213
246 -#else /* __STDC__ */
247 -
248 -#if !defined(_LP64) && _FILE_OFFSET_BITS == 32
249 -
250 -#if (_POSIX_C_SOURCE - 0 >= 199506L) || defined(_POSIX_PTHREAD_SEMANTICS)
251 -
252 -#ifdef __PRAGMA_REDEFINE_EXTNAME
253 -#pragma redefine_extname readdir_r __posix_readdir_r
254 -extern int readdir_r();
255 -#else /* __PRAGMA_REDEFINE_EXTNAME */
256 -
257 -extern int __posix_readdir_r();
258 -
259 -#ifdef __lint
260 -#define readdir_r __posix_readdir_r
261 -#else /* !__lint */
262 -
263 -static int
264 -readdir_r(DIR *_RESTRICT_KYWD __dp, struct dirent *_RESTRICT_KYWD __ent,
265 - struct dirent **_RESTRICT_KYWD __res)
266 -{
267 - return (__posix_readdir_r(__dp, __ent, __res));
268 -}
269 -
270 -#endif /* !__lint */
271 -#endif /* __PRAGMA_REDEFINE_EXTNAME */
272 -
273 -#else /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
274 -
275 -extern struct dirent *readdir_r();
276 -
277 -#endif /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
278 -
279 -#else /* !_LP64 && _FILE_OFFSET_BITS == 32 */
280 -
281 -#if defined(_LP64)
282 -#ifdef __PRAGMA_REDEFINE_EXTNAME
283 -#pragma redefine_extname readdir64_r readdir_r
284 -#else
285 -#define readdir64_r readdir
286 -#endif
287 -#else /* _LP64 */
288 -#ifdef __PRAGMA_REDEFINE_EXTNAME
289 -#pragma redefine_extname readdir_r readdir64_r
290 -#else
291 -#define readdir_r readdir64_r
292 -#endif
293 -#endif /* _LP64 */
294 -extern int readdir_r();
295 -
296 -#endif /* !_LP64 && _FILE_OFFSET_BITS == 32 */
297 -
298 -#if defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \
299 - !defined(__PRAGMA_REDEFINE_EXTNAME))
300 -/* transitional large file interface */
301 -extern int readdir64_r();
302 -#endif
303 -
304 -#endif /* __STDC__ */
305 -
306 214 #endif /* defined(__EXTENSIONS__) || defined(_REENTRANT)... */
307 215
308 216 #ifdef __cplusplus
309 217 }
310 218 #endif
311 219
312 220 #endif /* _DIRENT_H */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX