| 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 |  |