1set prototyped 2 3set nodefine 4lib stat64 -D_LARGEFILE64_SOURCE 5typ off64_t -D_LARGEFILE64_SOURCE 6set define 7 8lib opendir 9hdr dirent,ndir 10sys dir 11nxt dirent 12 13tst 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 26 27if ( ! _lib_opendir ) { 28 /* 29 * <dirent.h> for systems with no opendir() 30 */ 31 32 #ifndef _DIRENT_H 33 #define _DIRENT_H 34 35 typedef struct 36 { 37 int dd_fd; /* file descriptor */ 38 #ifdef _DIR_PRIVATE_ 39 _DIR_PRIVATE_ 40 #endif 41 } DIR; 42 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 }; 50 51 #ifndef _DIR_PRIVATE_ 52 53 #ifdef rewinddir 54 #undef rewinddir 55 #define rewinddir(p) seekdir(p,0L) 56 #endif 57 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*); 63 64 #endif 65 66 #endif 67} 68elif ( _nxt_dirent && _lib_stat64 && _typ_off64_t && _botch_d_ino_dirent64 ) pass{ 69cat <<! 70 /* 71 * <dirent.h> for [fl]stat64 and off64_t with sizeof(ino64_t)==4 72 */ 73 74 #ifndef _AST_STD_H 75 76 #include ${_nxt_dirent-_nxt_dirent} /* the native <dirent.h> */ 77 78 #else 79 80 #ifndef _DIR64_H 81 #define _DIR64_H 82 83 #include <ast_std.h> 84 85 #if _typ_off64_t 86 #undef off_t 87 #endif 88 89 #undef __ino64_t 90 #define __ino64_t int64_t 91 92 #include ${_nxt_dirent-_nxt_dirent} /* the native <dirent.h> */ 93 94 #undef __ino64_t 95 #define __ino64_t __ino64_t 96 97 #if _typ_off64_t 98 #define off_t off64_t 99 #endif 100 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 109 110 #endif 111 112 #endif 113! 114}end 115elif ( _nxt_dirent && _lib_stat64 && _typ_off64_t ) pass{ 116cat <<! 117 /* 118 * <dirent.h> for [fl]stat64 and off64_t 119 */ 120 121 #ifndef _AST_STD_H 122 123 #include ${_nxt_dirent-_nxt_dirent} /* the native <dirent.h> */ 124 125 #else 126 127 #ifndef _DIR64_H 128 #define _DIR64_H 129 130 #include <ast_std.h> 131 132 #if _typ_off64_t 133 #undef off_t 134 #endif 135 136 #include ${_nxt_dirent-_nxt_dirent} /* the native <dirent.h> */ 137 138 #if _typ_off64_t 139 #define off_t off64_t 140 #endif 141 142 #if _lib_opendir64 143 #define _ast_opendir opendir64 144 #undef opendir 145 #define opendir _ast_opendir 146 #if _lib_fdopendir64 147 #undef fdopendir 148 #define fdopendir fdopendir64 149 #endif 150 #if _typ_DIR64 && !defined(DIR) 151 #define DIR DIR64 152 #endif 153 #endif 154 #if _lib_readdir64 && _typ_struct_dirent64 155 #ifndef dirent 156 #define dirent dirent64 157 #endif 158 #ifndef readdir 159 #define readdir readdir64 160 #endif 161 #endif 162 #if _lib_rewinddir64 && !defined(rewinddir) 163 #define rewinddir rewinddir64 164 #endif 165 #if _lib_seekdir64 && !defined(seekdir) 166 #define seekdir seekdir64 167 #endif 168 #if _lib_telldir64 && !defined(telldir) 169 #define telldir telldir64 170 #endif 171 #if _lib_closedir64 && !defined(closedir) 172 #define closedir closedir64 173 #endif 174 175 #endif 176 177 #endif 178! 179}end 180elif ( _nxt_dirent && _hdr_dirent ) pass{ 181cat <<! 182 /* 183 * <dirent.h> for systems with ok <dirent.h> 184 */ 185 186 #ifndef _DIRENT_H 187 188 #include ${_nxt_dirent-_nxt_dirent} /* the native <dirent.h> */ 189 190 #ifndef _DIRENT_H 191 #define _DIRENT_H 192 #endif 193 194 #endif 195! 196}end 197elif ( _hdr_ndir ) { 198 /* 199 * <dirent.h> for systems with opendir() and <ndir.h> 200 */ 201 202 #ifndef _DIRENT_H 203 #define _DIRENT_H 204 205 #if defined(__STDPP__directive) && defined(__STDPP__hide) 206 __STDPP__directive pragma pp:hide closedir opendir readdir seekdir telldir 207 #else 208 #define closedir ______closedir 209 #define opendir ______opendir 210 #define readdir ______readdir 211 #define seekdir ______seekdir 212 #define telldir ______telldir 213 #endif 214 215 #include <ndir.h> 216 217 #if defined(__STDPP__directive) && defined(__STDPP__hide) 218 __STDPP__directive pragma pp:nohide closedir opendir readdir seekdir telldir 219 #else 220 #undef closedir 221 #undef opendir 222 #undef readdir 223 #undef seekdir 224 #undef telldir 225 #endif 226 227 #ifndef dirent 228 #define dirent direct 229 #endif 230 231 #if !defined(d_fileno) && !defined(d_ino) 232 #define d_fileno d_ino 233 #endif 234 235 #ifdef rewinddir 236 #undef rewinddir 237 #define rewinddir(p) seekdir(p,0L) 238 #endif 239 240 extern DIR* opendir(const char*); 241 extern void closedir(DIR*); 242 extern struct dirent* readdir(DIR*); 243 extern void seekdir(DIR*, long); 244 extern long telldir(DIR*); 245 246 #endif 247} 248elif ( _sys_dir ) { 249 /* 250 * <dirent.h> for systems with opendir() and no <ndir.h> 251 */ 252 253 #ifndef _DIRENT_H 254 #define _DIRENT_H 255 256 #if defined(__STDPP__directive) && defined(__STDPP__hide) 257 __STDPP__directive pragma pp:hide closedir opendir readdir seekdir telldir 258 #else 259 #define closedir ______closedir 260 #define opendir ______opendir 261 #define readdir ______readdir 262 #define seekdir ______seekdir 263 #define telldir ______telldir 264 #endif 265 266 #include <sys/dir.h> 267 268 #if defined(__STDPP__directive) && defined(__STDPP__hide) 269 __STDPP__directive pragma pp:nohide closedir opendir readdir seekdir telldir 270 #else 271 #undef closedir 272 #undef opendir 273 #undef readdir 274 #undef seekdir 275 #undef telldir 276 #endif 277 278 #ifndef dirent 279 #define dirent direct 280 #endif 281 282 #if !defined(d_fileno) && !defined(d_ino) 283 #define d_fileno d_ino 284 #endif 285 286 #ifdef rewinddir 287 #undef rewinddir 288 #define rewinddir(p) seekdir(p,0L) 289 #endif 290 291 extern DIR* opendir(const char*); 292 extern void closedir(DIR*); 293 extern struct dirent* readdir(DIR*); 294 extern void seekdir(DIR*, long); 295 extern long telldir(DIR*); 296 297 #endif 298} 299endif 300 301cat{ 302 #if _AST_INTERCEPT_IMPLEMENT < 2 303 304 #undef opendir 305 #define opendir ast_opendir 306 307 #endif 308 309 #if _AST_INTERCEPT_IMPLEMENT > 0 310 311 #if _BLD_ast && defined(__EXPORT__) 312 #define extern __EXPORT__ 313 #endif 314 315 extern DIR* ast_opendir(const char*); 316 317 #undef extern 318 319 #endif 320}end 321