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