diff options
author | Michael Pavone <pavone@retrodev.com> | 2016-04-22 19:18:15 -0700 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2016-04-22 19:18:15 -0700 |
commit | 2105a52a24e24b1b34cf397cb76b9df30f94d1b2 (patch) | |
tree | bda46bf0174828d8214ebd4c341a04d3cf6242c0 | |
parent | 9260a65a70b5d67a12b4c70a0e616f75711971dd (diff) |
FindFirstFile makes more sense for getting modification times of a path than using CreateFile and GetFileTimes
-rw-r--r-- | util.c | 26 |
1 files changed, 11 insertions, 15 deletions
@@ -286,23 +286,19 @@ dir_entry *get_dir_list(char *path, size_t *numret) 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) { - 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 { + HANDLE results; + WIN32_FIND_DATA file; + results = FindFirstFile(path, &file); + if (results == INVALID_HANDLE_VALUE) { 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) |