xref: /onnv-gate/usr/src/lib/libast/common/features/dirent (revision 4887:feebf9260c2e)
1*4887Schinset	prototyped
2*4887Schin
3*4887Schinset	nodefine
4*4887Schinlib	stat64 -D_LARGEFILE64_SOURCE
5*4887Schintyp	off64_t -D_LARGEFILE64_SOURCE
6*4887Schinset	define
7*4887Schin
8*4887Schinlib	opendir
9*4887Schinhdr	dirent,ndir
10*4887Schinsys	dir
11*4887Schinnxt	dirent
12*4887Schin
13*4887Schintst	botch_d_ino_dirent64 -D_LARGEFILE64_SOURCE note{ dirent64.d_ino vs. readdir64 mismatch }end compile{
14*4887Schin	#if !__arm__
15*4887Schin	)
16*4887Schin	#endif
17*4887Schin	#include <dirent.h>
18*4887Schin	int
19*4887Schin	main()
20*4887Schin	{
21*4887Schin		struct dirent64	ent;
22*4887Schin		char		aha[5-((int)sizeof(ent.d_ino))];
23*4887Schin		return sizeof(aha);
24*4887Schin	}
25*4887Schin}end
26*4887Schin
27*4887Schinif ( ! _lib_opendir ) {
28*4887Schin	/*
29*4887Schin	 * <dirent.h> for systems with no opendir()
30*4887Schin	 */
31*4887Schin
32*4887Schin	#ifndef _DIRENT_H
33*4887Schin	#define _DIRENT_H
34*4887Schin
35*4887Schin	typedef struct
36*4887Schin	{
37*4887Schin		int		dd_fd;		/* file descriptor		*/
38*4887Schin	#ifdef _DIR_PRIVATE_
39*4887Schin		_DIR_PRIVATE_
40*4887Schin	#endif
41*4887Schin	} DIR;
42*4887Schin
43*4887Schin	struct dirent
44*4887Schin	{
45*4887Schin		long		d_fileno;	/* entry serial number		*/
46*4887Schin		int		d_reclen;	/* entry length			*/
47*4887Schin		int		d_namlen;	/* entry name length		*/
48*4887Schin		char		d_name[1];	/* entry name			*/
49*4887Schin	};
50*4887Schin
51*4887Schin	#ifndef _DIR_PRIVATE_
52*4887Schin
53*4887Schin	#ifdef	rewinddir
54*4887Schin	#undef	rewinddir
55*4887Schin	#define rewinddir(p)	seekdir(p,0L)
56*4887Schin	#endif
57*4887Schin
58*4887Schin	extern DIR*		opendir(const char*);
59*4887Schin	extern void		closedir(DIR*);
60*4887Schin	extern struct dirent*	readdir(DIR*);
61*4887Schin	extern void		seekdir(DIR*, long);
62*4887Schin	extern long		telldir(DIR*);
63*4887Schin
64*4887Schin	#endif
65*4887Schin
66*4887Schin	#endif
67*4887Schin}
68*4887Schinelif ( _nxt_dirent && _lib_stat64 && _typ_off64_t && _botch_d_ino_dirent64 ) pass{
69*4887Schincat <<!
70*4887Schin	/*
71*4887Schin	 * <dirent.h> for [fl]stat64 and off64_t with sizeof(ino64_t)==4
72*4887Schin	 */
73*4887Schin
74*4887Schin	#ifndef _AST_STD_H
75*4887Schin
76*4887Schin	#include $_nxt_dirent	/* the native <dirent.h> */
77*4887Schin
78*4887Schin	#else
79*4887Schin
80*4887Schin	#ifndef _DIR64_H
81*4887Schin	#define _DIR64_H
82*4887Schin
83*4887Schin	#include <ast_std.h>
84*4887Schin
85*4887Schin	#if _typ_off64_t
86*4887Schin	#undef	off_t
87*4887Schin	#endif
88*4887Schin
89*4887Schin	#undef	__ino64_t
90*4887Schin	#define __ino64_t	int64_t
91*4887Schin
92*4887Schin	#include $_nxt_dirent	/* the native <dirent.h> */
93*4887Schin
94*4887Schin	#undef	__ino64_t
95*4887Schin	#define __ino64_t	__ino64_t
96*4887Schin
97*4887Schin	#if _typ_off64_t
98*4887Schin	#define	off_t		off64_t
99*4887Schin	#endif
100*4887Schin
101*4887Schin	#if _lib_readdir64 && _typ_struct_dirent64
102*4887Schin	#ifndef	dirent
103*4887Schin	#define dirent		dirent64
104*4887Schin	#endif
105*4887Schin	#ifndef	readdir
106*4887Schin	#define readdir		readdir64
107*4887Schin	#endif
108*4887Schin	#endif
109*4887Schin
110*4887Schin	#endif
111*4887Schin
112*4887Schin	#endif
113*4887Schin!
114*4887Schin}end
115*4887Schinelif ( _nxt_dirent && _lib_stat64 && _typ_off64_t ) pass{
116*4887Schincat <<!
117*4887Schin	/*
118*4887Schin	 * <dirent.h> for [fl]stat64 and off64_t
119*4887Schin	 */
120*4887Schin
121*4887Schin	#ifndef _AST_STD_H
122*4887Schin
123*4887Schin	#include $_nxt_dirent	/* the native <dirent.h> */
124*4887Schin
125*4887Schin	#else
126*4887Schin
127*4887Schin	#ifndef _DIR64_H
128*4887Schin	#define _DIR64_H
129*4887Schin
130*4887Schin	#include <ast_std.h>
131*4887Schin
132*4887Schin	#if _typ_off64_t
133*4887Schin	#undef	off_t
134*4887Schin	#endif
135*4887Schin
136*4887Schin	#include $_nxt_dirent	/* the native <dirent.h> */
137*4887Schin
138*4887Schin	#if _typ_off64_t
139*4887Schin	#define	off_t		off64_t
140*4887Schin	#endif
141*4887Schin
142*4887Schin	#if _lib_readdir64 && _typ_struct_dirent64
143*4887Schin	#ifndef	dirent
144*4887Schin	#define dirent		dirent64
145*4887Schin	#endif
146*4887Schin	#ifndef	readdir
147*4887Schin	#define readdir		readdir64
148*4887Schin	#endif
149*4887Schin	#endif
150*4887Schin
151*4887Schin	#endif
152*4887Schin
153*4887Schin	#endif
154*4887Schin!
155*4887Schin}end
156*4887Schinelif ( _nxt_dirent && _hdr_dirent ) pass{
157*4887Schincat <<!
158*4887Schin	/*
159*4887Schin	 * <dirent.h> for systems with ok <dirent.h>
160*4887Schin	 */
161*4887Schin
162*4887Schin	#ifndef _DIRENT_H
163*4887Schin
164*4887Schin	#include $_nxt_dirent	/* the native <dirent.h> */
165*4887Schin
166*4887Schin	#ifndef _DIRENT_H
167*4887Schin	#define _DIRENT_H
168*4887Schin	#endif
169*4887Schin
170*4887Schin	#endif
171*4887Schin!
172*4887Schin}end
173*4887Schinelif ( _hdr_ndir ) {
174*4887Schin	/*
175*4887Schin	 * <dirent.h> for systems with opendir() and <ndir.h>
176*4887Schin	 */
177*4887Schin
178*4887Schin	#ifndef _DIRENT_H
179*4887Schin	#define _DIRENT_H
180*4887Schin
181*4887Schin	#if defined(__STDPP__directive) && defined(__STDPP__hide)
182*4887Schin	__STDPP__directive pragma pp:hide closedir opendir readdir seekdir telldir
183*4887Schin	#else
184*4887Schin	#define closedir	______closedir
185*4887Schin	#define opendir		______opendir
186*4887Schin	#define readdir		______readdir
187*4887Schin	#define seekdir		______seekdir
188*4887Schin	#define telldir		______telldir
189*4887Schin	#endif
190*4887Schin
191*4887Schin	#include <ndir.h>
192*4887Schin
193*4887Schin	#if defined(__STDPP__directive) && defined(__STDPP__hide)
194*4887Schin	__STDPP__directive pragma pp:nohide closedir opendir readdir seekdir telldir
195*4887Schin	#else
196*4887Schin	#undef	closedir
197*4887Schin	#undef	opendir
198*4887Schin	#undef	readdir
199*4887Schin	#undef	seekdir
200*4887Schin	#undef	telldir
201*4887Schin	#endif
202*4887Schin
203*4887Schin	#ifndef dirent
204*4887Schin	#define dirent	direct
205*4887Schin	#endif
206*4887Schin
207*4887Schin	#if !defined(d_fileno) && !defined(d_ino)
208*4887Schin	#define d_fileno	d_ino
209*4887Schin	#endif
210*4887Schin
211*4887Schin	#ifdef	rewinddir
212*4887Schin	#undef	rewinddir
213*4887Schin	#define rewinddir(p)	seekdir(p,0L)
214*4887Schin	#endif
215*4887Schin
216*4887Schin	extern DIR*		opendir(const char*);
217*4887Schin	extern void		closedir(DIR*);
218*4887Schin	extern struct dirent*	readdir(DIR*);
219*4887Schin	extern void		seekdir(DIR*, long);
220*4887Schin	extern long		telldir(DIR*);
221*4887Schin
222*4887Schin	#endif
223*4887Schin}
224*4887Schinelif ( _sys_dir ) {
225*4887Schin	/*
226*4887Schin	 * <dirent.h> for systems with opendir() and no <ndir.h>
227*4887Schin	 */
228*4887Schin
229*4887Schin	#ifndef _DIRENT_H
230*4887Schin	#define _DIRENT_H
231*4887Schin
232*4887Schin	#if defined(__STDPP__directive) && defined(__STDPP__hide)
233*4887Schin	__STDPP__directive pragma pp:hide closedir opendir readdir seekdir telldir
234*4887Schin	#else
235*4887Schin	#define closedir	______closedir
236*4887Schin	#define opendir		______opendir
237*4887Schin	#define readdir		______readdir
238*4887Schin	#define seekdir		______seekdir
239*4887Schin	#define telldir		______telldir
240*4887Schin	#endif
241*4887Schin
242*4887Schin	#include <sys/dir.h>
243*4887Schin
244*4887Schin	#if defined(__STDPP__directive) && defined(__STDPP__hide)
245*4887Schin	__STDPP__directive pragma pp:nohide closedir opendir readdir seekdir telldir
246*4887Schin	#else
247*4887Schin	#undef	closedir
248*4887Schin	#undef	opendir
249*4887Schin	#undef	readdir
250*4887Schin	#undef	seekdir
251*4887Schin	#undef	telldir
252*4887Schin	#endif
253*4887Schin
254*4887Schin	#ifndef dirent
255*4887Schin	#define dirent	direct
256*4887Schin	#endif
257*4887Schin
258*4887Schin	#if !defined(d_fileno) && !defined(d_ino)
259*4887Schin	#define d_fileno	d_ino
260*4887Schin	#endif
261*4887Schin
262*4887Schin	#ifdef	rewinddir
263*4887Schin	#undef	rewinddir
264*4887Schin	#define rewinddir(p)	seekdir(p,0L)
265*4887Schin	#endif
266*4887Schin
267*4887Schin	extern DIR*		opendir(const char*);
268*4887Schin	extern void		closedir(DIR*);
269*4887Schin	extern struct dirent*	readdir(DIR*);
270*4887Schin	extern void		seekdir(DIR*, long);
271*4887Schin	extern long		telldir(DIR*);
272*4887Schin
273*4887Schin	#endif
274*4887Schin}
275*4887Schinendif
276