26template <
typename CrtTime>
32 return __loctotime32_t(st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, -1);
38 return __loctotime64_t(st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, -1);
43template <
typename CrtTime>
47 if (ft.dwLowDateTime == 0 && ft.dwHighDateTime == 0)
48 return static_cast<CrtTime
>(-1);
52 return static_cast<CrtTime
>(-1);
56 return static_cast<CrtTime
>(-1);
58 return convert_system_time_to_time_t<CrtTime>(st_local);
63template <
typename Integer>
69 return static_cast<__int64>(high) * 0x100000000ll +
static_cast<__int64>(low);
81template <
typename W
ideFileData,
typename NarrowFileData>
95 fd.attrib = wfd.attrib;
96 fd.time_create = wfd.time_create;
97 fd.time_access = wfd.time_access;
98 fd.time_write = wfd.time_write;
119template <
typename W
ideFileData>
128 static_assert(
sizeof(WideFileData().name) <=
sizeof(
WIN32_FIND_DATAW().cFileName),
"");
157 : wfd.dwFileAttributes;
159 typedef decltype(
result->time_create) crt_time_type;
160 result->time_create = convert_file_time_to_time_t<crt_time_type>(wfd.ftCreationTime);
161 result->time_access = convert_file_time_to_time_t<crt_time_type>(wfd.ftLastAccessTime);
162 result->time_write = convert_file_time_to_time_t<crt_time_type>(wfd.ftLastWriteTime);
164 typedef decltype(
result->size) file_size_type;
165 result->size = convert_file_size_to_integer<file_size_type>(wfd.nFileSizeHigh, wfd.nFileSizeLow);
172template <
typename W
ideFileData,
typename NarrowFileData>
186 WideFileData wide_result;
265template <
typename W
ideFileData>
300 : wfd.dwFileAttributes;
302 typedef decltype(
result->time_create) crt_time_type;
303 result->time_create = convert_file_time_to_time_t<crt_time_type>(wfd.ftCreationTime);
304 result->time_access = convert_file_time_to_time_t<crt_time_type>(wfd.ftLastAccessTime);
305 result->time_write = convert_file_time_to_time_t<crt_time_type>(wfd.ftLastWriteTime);
307 typedef decltype(
result->size) file_size_type;
308 result->size = convert_file_size_to_integer<file_size_type>(wfd.nFileSizeHigh, wfd.nFileSizeLow);
315template <
typename W
ideFileData,
typename NarrowFileData>
318 WideFileData wide_result;
320 if (return_value == -1)
_Out_opt_ UINT * code_page
#define _VALIDATE_RETURN(expr, errorcode, retexpr)
__time32_t __cdecl __loctotime32_t(int, int, int, int, int, int, int)
__time64_t __cdecl __loctotime64_t(int, int, int, int, int, int, int)
errno_t __acrt_mbs_to_wcs_cp(char const *const null_terminated_input_string, __crt_win32_buffer< wchar_t, ResizePolicy > &win32_buffer, unsigned int const code_page)
errno_t __acrt_wcs_to_mbs_cp(wchar_t const *const null_terminated_input_string, __crt_win32_buffer< char, ResizePolicy > &win32_buffer, unsigned int const code_page)
unsigned int __acrt_get_utf8_acp_compatibility_codepage()
#define ERROR_NOT_ENOUGH_MEMORY
#define INVALID_HANDLE_VALUE
#define FILE_ATTRIBUTE_NORMAL
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
HANDLE WINAPI FindFirstFileExW(IN LPCWSTR lpFileName, IN FINDEX_INFO_LEVELS fInfoLevelId, OUT LPVOID lpFindFileData, IN FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, IN DWORD dwAdditionalFlags)
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
BOOL WINAPI SystemTimeToTzSpecificLocalTime(CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation, CONST SYSTEMTIME *lpUniversalTime, LPSYSTEMTIME lpLocalTime)
static char * cvt(double arg, int ndigits, int *decpt, int *sign, char *buf, int eflag)
intptr_t __cdecl _wfindfirst32i64(wchar_t const *const pattern, _wfinddata32i64_t *const result)
static int __cdecl common_find_next_narrow(intptr_t const pattern, NarrowFileData *const result, unsigned int const code_page)
int __cdecl _wfindnext64i32(intptr_t const handle, _wfinddata64i32_t *const result)
int __cdecl _findclose(intptr_t const handle)
static CrtTime __cdecl convert_system_time_to_time_t(SYSTEMTIME const &st)
intptr_t __cdecl _wfindfirst64(wchar_t const *const pattern, _wfinddata64_t *const result)
intptr_t __cdecl _wfindfirst32(wchar_t const *const pattern, _wfinddata32_t *const result)
intptr_t __cdecl _wfindfirst64i32(wchar_t const *const pattern, _wfinddata64i32_t *const result)
int __cdecl _wfindnext32(intptr_t const handle, _wfinddata32_t *const result)
static Integer convert_file_size_to_integer(DWORD const high, DWORD const low)
int __cdecl _findnext64i32(intptr_t const handle, _finddata64i32_t *const result)
intptr_t __cdecl _findfirst64i32(char const *const pattern, _finddata64i32_t *const result)
int __cdecl _findnext32i64(intptr_t const handle, _finddata32i64_t *const result)
_Out_ NarrowFileData unsigned int const code_page throw()
intptr_t __cdecl _findfirst32i64(char const *const pattern, _finddata32i64_t *const result)
_Out_ NarrowFileData & fd
static int __cdecl common_find_next_wide(intptr_t const handle, WideFileData *const result)
intptr_t __cdecl _findfirst64(char const *const pattern, __finddata64_t *const result)
int __cdecl _findnext64(intptr_t const handle, __finddata64_t *const result)
intptr_t __cdecl _findfirst32(char const *const pattern, _finddata32_t *const result)
static CrtTime __cdecl convert_file_time_to_time_t(FILETIME const &ft)
int __cdecl _wfindnext32i64(intptr_t const handle, _wfinddata32i64_t *const result)
int __cdecl _findnext32(intptr_t const handle, _finddata32_t *const result)
int __cdecl _wfindnext64(intptr_t const handle, _wfinddata64_t *const result)
#define strcpy_s(d, l, s)
#define wcscpy_s(d, l, s)
#define ERROR_FILE_NOT_FOUND
#define UNREFERENCED_PARAMETER(P)
struct WIN32_FIND_DATAA WIN32_FIND_DATAW
DWORD WINAPI GetLastError(void)
#define ERROR_PATH_NOT_FOUND
#define ERROR_NO_MORE_FILES