27 wchar_t *filespecw, *resolvedw;
30 size_t resolvedw_len, filespecw_len, index;
31 bool might_need_prefix;
44 filespecw_len = resolvedw_len + 2;
45 if (filespecw_len >= _MAX_PATH && might_need_prefix) {
48 filespecw = (
wchar_t *)malloc((filespecw_len + 1)*
sizeof(
wchar_t));
49 if (filespecw ==
NULL) {
54 if (filespecw_len >= _MAX_PATH && might_need_prefix) {
59 wcscpy(filespecw, resolvedw);
60 index = resolvedw_len - 1;
62 if (index >= 0 && filespecw[index] == L
'/' || index == 0 && filespecw[index] == L
'\\')
63 filespecw[index] = L
'\0';
64 wcscat(filespecw, L
"\\*");
66 dp = (
DIR *) calloc(1,
sizeof(
DIR) + (_MAX_FNAME*5+1)*
sizeof(
char));
73 if ((
handle = FindFirstFileExW(filespecw, FindExInfoBasic, &(dp->
fileinfo), FindExSearchNameMatch,
NULL, FIND_FIRST_EX_LARGE_FETCH)) == INVALID_HANDLE_VALUE) {
75 if (
err == ERROR_NO_MORE_FILES ||
err == ERROR_FILE_NOT_FOUND) {
84 dp->
dirw = _wcsdup(resolvedw);
156 size_t dirw_len, filespecw_len, index;
157 bool might_need_prefix;
165 dirw_len = wcslen((
wchar_t *)dp->
dirw);
169 filespecw_len = dirw_len + 2;
170 if (filespecw_len >= _MAX_PATH && might_need_prefix) {
174 filespecw = (
wchar_t *)malloc((filespecw_len + 1)*
sizeof(
wchar_t));
175 if (filespecw ==
NULL) {
179 if (filespecw_len >= _MAX_PATH && might_need_prefix) {
184 wcscpy(filespecw, dp->
dirw);
185 index = dirw_len - 1;
188 if (index >= 0 && (filespecw[index] == L
'/' ||
189 (filespecw[index] == L
'\\' && index == 0)))
190 filespecw[index] = L
'\0';
191 wcscat(filespecw, L
"\\*");
193 if ((
handle = FindFirstFileExW(filespecw, FindExInfoBasic, &(dp->
fileinfo), FindExSearchNameMatch,
NULL, FIND_FIRST_EX_LARGE_FETCH)) == INVALID_HANDLE_VALUE) {
#define PHP_WIN32_CP_IGNORE_LEN