1 /* 2 * DIRENT.H (formerly DIRLIB.H) 3 * This file has no copyright assigned and is placed in the Public Domain. 4 * This file is part of the mingw-runtime package. 5 * No warranty is given; refer to the file DISCLAIMER within the package. 6 * 7 */ 8 9 #ifndef _DIRENT_H_ 10 #define _DIRENT_H_ 11 12 /* All the headers include this file. */ 13 #include <crtdefs.h> 14 15 #include <io.h> 16 17 #ifndef RC_INVOKED 18 19 #pragma pack(push,_CRT_PACKING) 20 21 #ifdef __cplusplus 22 extern "C" { 23 #endif 24 25 struct dirent 26 { 27 long d_ino; /* Always zero. */ 28 unsigned short d_reclen; /* Always zero. */ 29 unsigned short d_namlen; /* Length of name in d_name. */ 30 char d_name[260]; /* [FILENAME_MAX] */ /* File name. */ 31 }; 32 33 /* 34 * This is an internal data structure. Good programmers will not use it 35 * except as an argument to one of the functions below. 36 * dd_stat field is now int (was short in older versions). 37 */ 38 typedef struct 39 { 40 /* disk transfer area for this dir */ 41 struct _finddata_t dd_dta; 42 43 /* dirent struct to return from dir (NOTE: this makes this thread 44 * safe as long as only one thread uses a particular DIR struct at 45 * a time) */ 46 struct dirent dd_dir; 47 48 /* _findnext handle */ 49 intptr_t dd_handle; 50 51 /* 52 * Status of search: 53 * 0 = not started yet (next entry to read is first entry) 54 * -1 = off the end 55 * positive = 0 based index of next entry 56 */ 57 int dd_stat; 58 59 /* given path for dir with search pattern (struct is extended) */ 60 char dd_name[1]; 61 } DIR; 62 63 DIR* __cdecl __MINGW_NOTHROW opendir (const char*); 64 struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR*); 65 int __cdecl __MINGW_NOTHROW closedir (DIR*); 66 void __cdecl __MINGW_NOTHROW rewinddir (DIR*); 67 long __cdecl __MINGW_NOTHROW telldir (DIR*); 68 void __cdecl __MINGW_NOTHROW seekdir (DIR*, long); 69 70 71 /* wide char versions */ 72 73 struct _wdirent 74 { 75 long d_ino; /* Always zero. */ 76 unsigned short d_reclen; /* Always zero. */ 77 unsigned short d_namlen; /* Length of name in d_name. */ 78 wchar_t d_name[260]; /* [FILENAME_MAX] */ /* File name. */ 79 }; 80 81 /* 82 * This is an internal data structure. Good programmers will not use it 83 * except as an argument to one of the functions below. 84 */ 85 typedef struct 86 { 87 /* disk transfer area for this dir */ 88 struct _wfinddata_t dd_dta; 89 90 /* dirent struct to return from dir (NOTE: this makes this thread 91 * safe as long as only one thread uses a particular DIR struct at 92 * a time) */ 93 struct _wdirent dd_dir; 94 95 /* _findnext handle */ 96 intptr_t dd_handle; 97 98 /* 99 * Status of search: 100 * 0 = not started yet (next entry to read is first entry) 101 * -1 = off the end 102 * positive = 0 based index of next entry 103 */ 104 int dd_stat; 105 106 /* given path for dir with search pattern (struct is extended) */ 107 wchar_t dd_name[1]; 108 } _WDIR; 109 110 _WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t*); 111 struct _wdirent* __cdecl __MINGW_NOTHROW _wreaddir (_WDIR*); 112 int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR*); 113 void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR*); 114 long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR*); 115 void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR*, long); 116 117 118 #ifdef __cplusplus 119 } 120 #endif 121 122 #pragma pack(pop) 123 124 #endif /* Not RC_INVOKED */ 125 126 #endif /* Not _DIRENT_H_ */ 127 128