1 #ifndef READDIR_H 2 #define READDIR_H 3 4 5 #ifdef __cplusplus 6 extern "C" { 7 #endif 8 9 /* 10 * Structures and types used to implement opendir/readdir/closedir 11 * on Windows. 12 */ 13 14 #include <config.w32.h> 15 16 #include "ioutil.h" 17 18 #define _DIRENT_HAVE_D_TYPE 19 #define DT_UNKNOWN 0 20 #define DT_DIR 4 21 #define DT_REG 8 22 23 /* struct dirent - same as Unix */ 24 struct dirent { 25 long d_ino; /* inode (always 1 in WIN32) */ 26 off_t d_off; /* offset to this dirent */ 27 unsigned short d_reclen; /* length of d_name */ 28 unsigned char d_type; 29 char d_name[1]; /* null terminated filename in the current encoding, glyph number <= 255 wchar_t's + \0 byte */ 30 }; 31 32 /* typedef DIR - not the same as Unix */ 33 struct DIR_W32 { 34 HANDLE handle; /* _findfirst/_findnext handle */ 35 uint32_t offset; /* offset into directory */ 36 uint8_t finished; /* 1 if there are not more files */ 37 WIN32_FIND_DATAW fileinfo; /* from _findfirst/_findnext */ 38 wchar_t *dirw; /* the dir we are reading */ 39 struct dirent dent; /* the dirent to return */ 40 }; 41 typedef struct DIR_W32 DIR; 42 43 /* Function prototypes */ 44 DIR *opendir(const char *); 45 struct dirent *readdir(DIR *); 46 int closedir(DIR *); 47 int rewinddir(DIR *); 48 49 #ifdef __cplusplus 50 } 51 #endif 52 53 #endif /* READDIR_H */ 54