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