import less(1)
[unleashed/tickless.git] / usr / src / lib / libast / common / features / dirent
blob3e7d8d390034c9a3c77193524a8445d41b005d05
1 set     prototyped
3 set     nodefine
4 lib     stat64 -D_LARGEFILE64_SOURCE
5 typ     off64_t -D_LARGEFILE64_SOURCE
6 set     define
8 lib     opendir
9 hdr     dirent,ndir
10 sys     dir
11 nxt     dirent
13 tst     botch_d_ino_dirent64 -D_LARGEFILE64_SOURCE note{ dirent64.d_ino vs. readdir64 mismatch }end compile{
14         #if !__arm__
15         )
16         #endif
17         #include <dirent.h>
18         int
19         main()
20         {
21                 struct dirent64 ent;
22                 char            aha[5-((int)sizeof(ent.d_ino))];
23                 return sizeof(aha);
24         }
25 }end
27 if ( ! _lib_opendir ) {
28         /*
29          * <dirent.h> for systems with no opendir()
30          */
32         #ifndef _DIRENT_H
33         #define _DIRENT_H
35         typedef struct
36         {
37                 int             dd_fd;          /* file descriptor              */
38         #ifdef _DIR_PRIVATE_
39                 _DIR_PRIVATE_
40         #endif
41         } DIR;
43         struct dirent
44         {
45                 long            d_fileno;       /* entry serial number          */
46                 int             d_reclen;       /* entry length                 */
47                 int             d_namlen;       /* entry name length            */
48                 char            d_name[1];      /* entry name                   */
49         };
51         #ifndef _DIR_PRIVATE_
53         #ifdef  rewinddir
54         #undef  rewinddir
55         #define rewinddir(p)    seekdir(p,0L)
56         #endif
58         extern DIR*             opendir(const char*);
59         extern void             closedir(DIR*);
60         extern struct dirent*   readdir(DIR*);
61         extern void             seekdir(DIR*, long);
62         extern long             telldir(DIR*);
64         #endif
66         #endif
68 elif ( _nxt_dirent && _lib_stat64 && _typ_off64_t && _botch_d_ino_dirent64 ) pass{
69 cat <<!
70         /*
71          * <dirent.h> for [fl]stat64 and off64_t with sizeof(ino64_t)==4
72          */
74         #ifndef _AST_STD_H
76         #include $_nxt_dirent   /* the native <dirent.h> */
78         #else
80         #ifndef _DIR64_H
81         #define _DIR64_H
83         #include <ast_std.h>
85         #if _typ_off64_t
86         #undef  off_t
87         #endif
89         #undef  __ino64_t
90         #define __ino64_t       int64_t
92         #include $_nxt_dirent   /* the native <dirent.h> */
94         #undef  __ino64_t
95         #define __ino64_t       __ino64_t
97         #if _typ_off64_t
98         #define off_t           off64_t
99         #endif
101         #if _lib_readdir64 && _typ_struct_dirent64
102         #ifndef dirent
103         #define dirent          dirent64
104         #endif
105         #ifndef readdir
106         #define readdir         readdir64
107         #endif
108         #endif
110         #endif
112         #endif
114 }end
115 elif ( _nxt_dirent && _lib_stat64 && _typ_off64_t ) pass{
116 cat <<!
117         /*
118          * <dirent.h> for [fl]stat64 and off64_t
119          */
121         #ifndef _AST_STD_H
123         #include $_nxt_dirent   /* the native <dirent.h> */
125         #else
127         #ifndef _DIR64_H
128         #define _DIR64_H
130         #include <ast_std.h>
132         #if _typ_off64_t
133         #undef  off_t
134         #endif
136         #include $_nxt_dirent   /* the native <dirent.h> */
138         #if _typ_off64_t
139         #define off_t           off64_t
140         #endif
142         #if _lib_readdir64 && _typ_struct_dirent64
143         #ifndef dirent
144         #define dirent          dirent64
145         #endif
146         #ifndef readdir
147         #define readdir         readdir64
148         #endif
149         #endif
151         #endif
153         #endif
155 }end
156 elif ( _nxt_dirent && _hdr_dirent ) pass{
157 cat <<!
158         /*
159          * <dirent.h> for systems with ok <dirent.h>
160          */
162         #ifndef _DIRENT_H
164         #include $_nxt_dirent   /* the native <dirent.h> */
166         #ifndef _DIRENT_H
167         #define _DIRENT_H
168         #endif
170         #endif
172 }end
173 elif ( _hdr_ndir ) {
174         /*
175          * <dirent.h> for systems with opendir() and <ndir.h>
176          */
178         #ifndef _DIRENT_H
179         #define _DIRENT_H
181         #if defined(__STDPP__directive) && defined(__STDPP__hide)
182         __STDPP__directive pragma pp:hide closedir opendir readdir seekdir telldir
183         #else
184         #define closedir        ______closedir
185         #define opendir         ______opendir
186         #define readdir         ______readdir
187         #define seekdir         ______seekdir
188         #define telldir         ______telldir
189         #endif
191         #include <ndir.h>
193         #if defined(__STDPP__directive) && defined(__STDPP__hide)
194         __STDPP__directive pragma pp:nohide closedir opendir readdir seekdir telldir
195         #else
196         #undef  closedir
197         #undef  opendir
198         #undef  readdir
199         #undef  seekdir
200         #undef  telldir
201         #endif
203         #ifndef dirent
204         #define dirent  direct
205         #endif
207         #if !defined(d_fileno) && !defined(d_ino)
208         #define d_fileno        d_ino
209         #endif
211         #ifdef  rewinddir
212         #undef  rewinddir
213         #define rewinddir(p)    seekdir(p,0L)
214         #endif
216         extern DIR*             opendir(const char*);
217         extern void             closedir(DIR*);
218         extern struct dirent*   readdir(DIR*);
219         extern void             seekdir(DIR*, long);
220         extern long             telldir(DIR*);
222         #endif
224 elif ( _sys_dir ) {
225         /*
226          * <dirent.h> for systems with opendir() and no <ndir.h>
227          */
229         #ifndef _DIRENT_H
230         #define _DIRENT_H
232         #if defined(__STDPP__directive) && defined(__STDPP__hide)
233         __STDPP__directive pragma pp:hide closedir opendir readdir seekdir telldir
234         #else
235         #define closedir        ______closedir
236         #define opendir         ______opendir
237         #define readdir         ______readdir
238         #define seekdir         ______seekdir
239         #define telldir         ______telldir
240         #endif
242         #include <sys/dir.h>
244         #if defined(__STDPP__directive) && defined(__STDPP__hide)
245         __STDPP__directive pragma pp:nohide closedir opendir readdir seekdir telldir
246         #else
247         #undef  closedir
248         #undef  opendir
249         #undef  readdir
250         #undef  seekdir
251         #undef  telldir
252         #endif
254         #ifndef dirent
255         #define dirent  direct
256         #endif
258         #if !defined(d_fileno) && !defined(d_ino)
259         #define d_fileno        d_ino
260         #endif
262         #ifdef  rewinddir
263         #undef  rewinddir
264         #define rewinddir(p)    seekdir(p,0L)
265         #endif
267         extern DIR*             opendir(const char*);
268         extern void             closedir(DIR*);
269         extern struct dirent*   readdir(DIR*);
270         extern void             seekdir(DIR*, long);
271         extern long             telldir(DIR*);
273         #endif
275 endif