[Bug 53355] New: Missing functions SystemTimeToTzSpecificLocalTimeEx and TzSpecificLocalTimeToSystemTimeEx
https://bugs.winehq.org/show_bug.cgi?id=53355 Bug ID: 53355 Summary: Missing functions SystemTimeToTzSpecificLocalTimeEx and TzSpecificLocalTimeToSystemTimeEx Product: Wine Version: unspecified Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: kernel32 Assignee: wine-bugs(a)winehq.org Reporter: osmanx(a)problemloesungsmaschine.de Distribution: --- Created attachment 72743 --> https://bugs.winehq.org/attachment.cgi?id=72743 tz.exe Please implement SystemTimeToTzSpecificLocalTimeEx and TzSpecificLocalTimeToSystemTimeEx. The documentation can be found at <https://docs.microsoft.com/en-us/windows/win32/api/timezoneapi/nf-timezoneapi-systemtimetotzspecificlocaltimeex> and <https://docs.microsoft.com/en-us/windows/win32/api/timezoneapi/nf-timezoneapi-tzspecificlocaltimetosystemtimeex>. Note that because these functions currently outright abort, the work-around I implemented requires explicitly detecting Wine and not even trying to call them, which is far from optimal. Even just implementing stubs that always fail gracefully instead of just aborting the whole process would be much appreciated. This came up when improving local timezone handling in OpenMPT. See <https://bugs.openmpt.org/view.php?id=1618> and <https://source.openmpt.org/browse/openmpt?op=comp&compare[]=/trunk/OpenMPT/@17667&compare[]=/trunk/OpenMPT/@17668>. Simple test case (for SystemTimeToTzSpecificLocalTimeEx): tz.cpp: ``` #include <iostream> #include <stdexcept> #include <windows.h> int main() { try { SYSTEMTIME sys{}; GetSystemTime(&sys); DYNAMIC_TIME_ZONE_INFORMATION dtzi{}; if (GetDynamicTimeZoneInformation(&dtzi) == TIME_ZONE_ID_INVALID) { throw std::runtime_error("GetDynamicTimeZoneInformation() failed."); } SYSTEMTIME sys_local{}; if (SystemTimeToTzSpecificLocalTimeEx(&dtzi, &sys, &sys_local) == FALSE) { throw std::runtime_error("SystemTimeToTzSpecificLocalTimeEx() failed."); } std::cout << "OK" << std::endl; return 0; } catch (const std::exception & e) { std::cout << std::flush; std::cerr << e.what() << std::endl; std::cerr << std::flush; } std::cout << "FAIL" << std::endl; return 1; } ``` built with VS2022 by running `cl /std:c++20 /permissive- /EHsc /O2 /W4 tz.cpp` results in ``` wine: Call from 0x7bc7c990 to unimplemented function KERNEL32.dll.SystemTimeToTzSpecificLocalTimeEx, aborting ``` not even reaching the FAIL output. tz.exe attached. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=53355 Austin English <austinenglish(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, source, testcase -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla