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