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