4 int _findclose(int handle
)
6 // check no wildcards or invalid handle
7 if (handle
== 0 || handle
== -1)
9 return FindClose((void *)handle
);
12 int _findfirst(const char *_name
, struct _finddata_t
*result
)
14 WIN32_FIND_DATAA FindFileData
;
19 if ( _name
== NULL
|| _name
[0] == 0 )
21 len
= GetCurrentDirectoryA(MAX_PATH
-4,dir
);
22 if (dir
[len
-1] != '\\')
32 hFindFile
= (long)FindFirstFileA( dir
, &FindFileData
);
35 memset(result
,0,sizeof(struct _finddata_t
));
39 result
->attrib
= FindFileData
.dwFileAttributes
;
40 result
->time_create
= FileTimeToUnixTime(&FindFileData
.ftCreationTime
,NULL
);
41 result
->time_access
= FileTimeToUnixTime(&FindFileData
.ftLastAccessTime
,NULL
);
42 result
->time_write
= FileTimeToUnixTime(&FindFileData
.ftLastWriteTime
,NULL
);
43 result
->size
= FindFileData
.nFileSizeLow
;
44 strncpy(result
->name
,FindFileData
.cFileName
,MAX_PATH
);
46 // if no wildcard the find file handle can be closed right away
47 // a return value of 0 can flag this.
49 if (!strchr(dir
,'*') && !strchr(dir
,'?'))
51 _findclose(hFindFile
);
58 long _findfirsti64(const char *_name
, struct _finddatai64_t
*result
)
60 WIN32_FIND_DATAA FindFileData
;
65 if ( _name
== NULL
|| _name
[0] == 0 )
67 len
= GetCurrentDirectoryA(MAX_PATH
-4,dir
);
68 if (dir
[len
-1] != '\\')
78 hFindFile
= (long)FindFirstFileA(dir
, &FindFileData
);
81 memset(result
,0,sizeof(struct _finddatai64_t
));
85 result
->attrib
= FindFileData
.dwFileAttributes
;
86 result
->time_create
= FileTimeToUnixTime(&FindFileData
.ftCreationTime
,NULL
);
87 result
->time_access
= FileTimeToUnixTime(&FindFileData
.ftLastAccessTime
,NULL
);
88 result
->time_write
= FileTimeToUnixTime(&FindFileData
.ftLastWriteTime
,NULL
);
90 (((__int64
)FindFileData
.nFileSizeLow
)<<32) + FindFileData
.nFileSizeLow
;
91 strncpy(result
->name
,FindFileData
.cFileName
,MAX_PATH
);
93 // if no wildcard the find file handle can be closed right away
94 // a return value of 0 can flag this.
96 if (!strchr(dir
,'*') && !strchr(dir
,'?'))
98 _findclose(hFindFile
);
105 int _findnext(int handle
, struct _finddata_t
*result
)
107 WIN32_FIND_DATAA FindFileData
;
109 // check no wildcards or invalid handle
110 if (handle
== 0 || handle
== -1)
113 if (!FindNextFileA((void *)handle
, &FindFileData
))
116 result
->attrib
= FindFileData
.dwFileAttributes
;
117 result
->time_create
= FileTimeToUnixTime(&FindFileData
.ftCreationTime
,NULL
);
118 result
->time_access
= FileTimeToUnixTime(&FindFileData
.ftLastAccessTime
,NULL
);
119 result
->time_write
= FileTimeToUnixTime(&FindFileData
.ftLastWriteTime
,NULL
);
120 result
->size
= FindFileData
.nFileSizeLow
;
121 strncpy(result
->name
,FindFileData
.cFileName
, MAX_PATH
);
126 int _findnexti64(long handle
, struct _finddatai64_t
*result
)
128 WIN32_FIND_DATAA FindFileData
;
130 // check no wildcards or invalid handle
131 if (handle
== 0 || handle
== -1)
134 if (!FindNextFileA((void *)handle
, &FindFileData
))
137 result
->attrib
= FindFileData
.dwFileAttributes
;
138 result
->time_create
= FileTimeToUnixTime(&FindFileData
.ftCreationTime
,NULL
);
139 result
->time_access
= FileTimeToUnixTime(&FindFileData
.ftLastAccessTime
,NULL
);
140 result
->time_write
= FileTimeToUnixTime(&FindFileData
.ftLastWriteTime
,NULL
);
142 (((__int64
)FindFileData
.nFileSizeLow
)<<32) + FindFileData
.nFileSizeLow
;
143 strncpy(result
->name
,FindFileData
.cFileName
,MAX_PATH
);
148 long _wfindfirst(const wchar_t *_name
, struct _wfinddata_t
*result
)
150 WIN32_FIND_DATAW FindFileData
;
151 wchar_t dir
[MAX_PATH
];
155 if ( _name
== NULL
|| _name
[0] == 0 )
157 len
= GetCurrentDirectoryW(MAX_PATH
-4, dir
);
158 if (dir
[len
-1] != L
'\\')
168 hFindFile
= (long)FindFirstFileW(dir
, &FindFileData
);
171 memset(result
,0,sizeof(struct _wfinddata_t
));
175 result
->attrib
= FindFileData
.dwFileAttributes
;
176 result
->time_create
= FileTimeToUnixTime(&FindFileData
.ftCreationTime
,NULL
);
177 result
->time_access
= FileTimeToUnixTime(&FindFileData
.ftLastAccessTime
,NULL
);
178 result
->time_write
= FileTimeToUnixTime(&FindFileData
.ftLastWriteTime
,NULL
);
179 result
->size
= FindFileData
.nFileSizeLow
;
180 wcsncpy(result
->name
,FindFileData
.cFileName
,MAX_PATH
);
182 // if no wildcard the find file handle can be closed right away
183 // a return value of 0 can flag this.
185 if (!wcschr(dir
, L
'*') && !wcschr(dir
, L
'?'))
187 _findclose(hFindFile
);
194 long _wfindfirsti64(const wchar_t *_name
, struct _wfinddatai64_t
*result
)
196 WIN32_FIND_DATAW FindFileData
;
197 wchar_t dir
[MAX_PATH
];
201 if (_name
== NULL
|| _name
[0] == 0)
203 len
= GetCurrentDirectoryW(MAX_PATH
-4,dir
);
204 if (dir
[len
-1] != L
'\\')
214 hFindFile
= (long)FindFirstFileW(dir
, &FindFileData
);
217 memset(result
,0,sizeof(struct _wfinddatai64_t
));
221 result
->attrib
= FindFileData
.dwFileAttributes
;
222 result
->time_create
= FileTimeToUnixTime(&FindFileData
.ftCreationTime
,NULL
);
223 result
->time_access
= FileTimeToUnixTime(&FindFileData
.ftLastAccessTime
,NULL
);
224 result
->time_write
= FileTimeToUnixTime(&FindFileData
.ftLastWriteTime
,NULL
);
226 (((__int64
)FindFileData
.nFileSizeLow
)<<32) + FindFileData
.nFileSizeLow
;
227 wcsncpy(result
->name
,FindFileData
.cFileName
,MAX_PATH
);
229 // if no wildcard the find file handle can be closed right away
230 // a return value of 0 can flag this.
232 if (!wcschr(dir
,L
'*') && !wcschr(dir
,L
'?'))
234 _findclose(hFindFile
);
241 int _wfindnext(long handle
, struct _wfinddata_t
*result
)
243 WIN32_FIND_DATAW FindFileData
;
245 // check no wildcards or invalid handle
246 if (handle
== 0 || handle
== -1)
249 if (!FindNextFileW((void *)handle
, &FindFileData
))
252 result
->attrib
= FindFileData
.dwFileAttributes
;
253 result
->time_create
= FileTimeToUnixTime(&FindFileData
.ftCreationTime
,NULL
);
254 result
->time_access
= FileTimeToUnixTime(&FindFileData
.ftLastAccessTime
,NULL
);
255 result
->time_write
= FileTimeToUnixTime(&FindFileData
.ftLastWriteTime
,NULL
);
256 result
->size
= FindFileData
.nFileSizeLow
;
257 wcsncpy(result
->name
,FindFileData
.cFileName
, MAX_PATH
);
262 int _wfindnexti64(long handle
, struct _wfinddatai64_t
*result
)
264 WIN32_FIND_DATAW FindFileData
;
266 // check no wildcards or invalid handle
267 if (handle
== 0 || handle
== -1)
270 if (!FindNextFileW((void *)handle
, &FindFileData
))
273 result
->attrib
= FindFileData
.dwFileAttributes
;
274 result
->time_create
= FileTimeToUnixTime(&FindFileData
.ftCreationTime
,NULL
);
275 result
->time_access
= FileTimeToUnixTime(&FindFileData
.ftLastAccessTime
,NULL
);
276 result
->time_write
= FileTimeToUnixTime(&FindFileData
.ftLastWriteTime
,NULL
);
278 (((__int64
)FindFileData
.nFileSizeLow
)<<32) + FindFileData
.nFileSizeLow
;
279 wcsncpy(result
->name
,FindFileData
.cFileName
,MAX_PATH
);