@cryptotaxi247 / netdata-1 / commits / 787a961ac

under MSYS2 use stat (#19703)

Costa Tsaousis committed Feb 24, 2025 at 15:48 UTC 787a961acfd96ca12e74b6dcd175f5b9fdb8631a
1 file changed +54 -54
src/libnetdata/os/file_metadata.c
+54 -54
@@ -3,7 +3,7 @@
3 #include "libnetdata/libnetdata.h"
4 #include <errno.h>
5
6 -#if defined(OS_LINUX) || defined(OS_FREEBSD) || defined(OS_MACOS)
6 +//#if defined(OS_LINUX) || defined(OS_FREEBSD) || defined(OS_MACOS)
7 #include <sys/stat.h>
8
9 OS_FILE_METADATA os_get_file_metadata(const char *path) {
@@ -17,56 +17,56 @@ OS_FILE_METADATA os_get_file_metadata(const char *path) {
17 metadata.modified_time = st.st_mtime;
18 return metadata;
19 }
20 -#endif
21 -
22 -#if defined(OS_WINDOWS)
23 -#include <windows.h>
24 -
25 -OS_FILE_METADATA os_get_file_metadata(const char *path) {
26 - OS_FILE_METADATA metadata = {0};
27 -
28 - // Convert UTF-8 path to wide-character string
29 - int wlen = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, path, -1, NULL, 0);
30 - if (wlen == 0)
31 - return metadata;
32 -
33 - wchar_t *wpath = (wchar_t *)mallocz(wlen * sizeof(wchar_t));
34 - if (!wpath)
35 - return metadata;
36 -
37 - if (MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, path, -1, wpath, wlen) == 0) {
38 - freez(wpath);
39 - return metadata;
40 - }
41 -
42 - WIN32_FILE_ATTRIBUTE_DATA attr_data;
43 - if (!GetFileAttributesExW(wpath, GetFileExInfoStandard, &attr_data)) {
44 - freez(wpath);
45 - return metadata;
46 - }
47 -
48 - freez(wpath);
49 -
50 - // Combine high and low parts for 64-bit file size
51 - ULARGE_INTEGER file_size;
52 - file_size.HighPart = attr_data.nFileSizeHigh;
53 - file_size.LowPart = attr_data.nFileSizeLow;
54 - metadata.size_bytes = file_size.QuadPart;
55 -
56 - // Convert Windows FILETIME to Unix timestamp
57 - // Windows FILETIME is in 100-nanosecond intervals since January 1, 1601 UTC
58 - // Need to convert to seconds since January 1, 1970 UTC
59 - ULARGE_INTEGER win_time;
60 - win_time.HighPart = attr_data.ftLastWriteTime.dwHighDateTime;
61 - win_time.LowPart = attr_data.ftLastWriteTime.dwLowDateTime;
62 -
63 - // Subtract Windows epoch start (January 1, 1601 UTC)
64 - // Add Unix epoch start (January 1, 1970 UTC)
65 - // Convert from 100-nanosecond intervals to seconds
66 - const uint64_t WINDOWS_TICK = 10000000;
67 - const uint64_t SEC_TO_UNIX_EPOCH = 11644473600LL;
68 - metadata.modified_time = (time_t)((win_time.QuadPart / WINDOWS_TICK) - SEC_TO_UNIX_EPOCH);
69 -
70 - return metadata;
71 -}
72 -#endif
\ No newline at end of file
20 +//#endif
21 +
22 +//#if defined(OS_WINDOWS)
23 +//#include <windows.h>
24 +//
25 +//OS_FILE_METADATA os_get_file_metadata(const char *path) {
26 +// OS_FILE_METADATA metadata = {0};
27 +//
28 +// // Convert UTF-8 path to wide-character string
29 +// int wlen = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, path, -1, NULL, 0);
30 +// if (wlen == 0)
31 +// return metadata;
32 +//
33 +// wchar_t *wpath = (wchar_t *)mallocz(wlen * sizeof(wchar_t));
34 +// if (!wpath)
35 +// return metadata;
36 +//
37 +// if (MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, path, -1, wpath, wlen) == 0) {
38 +// freez(wpath);
39 +// return metadata;
40 +// }
41 +//
42 +// WIN32_FILE_ATTRIBUTE_DATA attr_data;
43 +// if (!GetFileAttributesExW(wpath, GetFileExInfoStandard, &attr_data)) {
44 +// freez(wpath);
45 +// return metadata;
46 +// }
47 +//
48 +// freez(wpath);
49 +//
50 +// // Combine high and low parts for 64-bit file size
51 +// ULARGE_INTEGER file_size;
52 +// file_size.HighPart = attr_data.nFileSizeHigh;
53 +// file_size.LowPart = attr_data.nFileSizeLow;
54 +// metadata.size_bytes = file_size.QuadPart;
55 +//
56 +// // Convert Windows FILETIME to Unix timestamp
57 +// // Windows FILETIME is in 100-nanosecond intervals since January 1, 1601 UTC
58 +// // Need to convert to seconds since January 1, 1970 UTC
59 +// ULARGE_INTEGER win_time;
60 +// win_time.HighPart = attr_data.ftLastWriteTime.dwHighDateTime;
61 +// win_time.LowPart = attr_data.ftLastWriteTime.dwLowDateTime;
62 +//
63 +// // Subtract Windows epoch start (January 1, 1601 UTC)
64 +// // Add Unix epoch start (January 1, 1970 UTC)
65 +// // Convert from 100-nanosecond intervals to seconds
66 +// const uint64_t WINDOWS_TICK = 10000000;
67 +// const uint64_t SEC_TO_UNIX_EPOCH = 11644473600LL;
68 +// metadata.modified_time = (time_t)((win_time.QuadPart / WINDOWS_TICK) - SEC_TO_UNIX_EPOCH);
69 +//
70 +// return metadata;
71 +//}
72 +//#endif