Mercurial > repos > blastem
changeset 974:fd7702bcc034
FindFirstFile makes more sense for getting modification times of a path than using CreateFile and GetFileTimes
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 22 Apr 2016 19:18:15 -0700 |
parents | fbd783ccbadb |
children | c6b19939da7b |
files | util.c |
diffstat | 1 files changed, 11 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/util.c Fri Apr 22 09:20:01 2016 -0700 +++ b/util.c Fri Apr 22 19:18:15 2016 -0700 @@ -286,23 +286,19 @@ time_t get_modification_time(char *path) { - HANDLE file = CreateFile(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); - if (file == INVALID_HANDLE_VALUE) { + HANDLE results; + WIN32_FIND_DATA file; + results = FindFirstFile(path, &file); + if (results == INVALID_HANDLE_VALUE) { return 0; } - FILETIME ft; - uint8_t ret = GetFileTime(file, NULL, NULL, &ft); - CloseHandle(file); - if (ret) { - uint64_t wintime = ((uint64_t)ft.dwHighDateTime) << 32 | ft.dwLowDateTime; - //convert to seconds - wintime /= 10000000; - //adjust for difference between Windows and Unix Epoch - wintime -= 11644473600LL; - return (time_t)wintime; - } else { - return 0; - } + FindClose(results); + uint64_t wintime = ((uint64_t)file.ftLastWriteTime.dwHighDateTime) << 32 | file.ftLastWriteTime.dwLowDateTime; + //convert to seconds + wintime /= 10000000; + //adjust for difference between Windows and Unix Epoch + wintime -= 11644473600LL; + return (time_t)wintime; } int ensure_dir_exists(char *path)