diff --git a/basis/calendar/windows/windows.factor b/basis/calendar/windows/windows.factor index caab530a23..65c922f119 100644 --- a/basis/calendar/windows/windows.factor +++ b/basis/calendar/windows/windows.factor @@ -1,15 +1,13 @@ USING: calendar namespaces alien.c-types system -windows.kernel32 kernel math combinators windows.errors ; +windows.kernel32 kernel math combinators windows.errors +classes.struct accessors ; IN: calendar.windows M: windows gmt-offset ( -- hours minutes seconds ) - "TIME_ZONE_INFORMATION" + TIME_ZONE_INFORMATION dup GetTimeZoneInformation { { TIME_ZONE_ID_INVALID [ win32-error-string throw ] } - { TIME_ZONE_ID_UNKNOWN [ TIME_ZONE_INFORMATION-Bias ] } - { TIME_ZONE_ID_STANDARD [ TIME_ZONE_INFORMATION-Bias ] } - { TIME_ZONE_ID_DAYLIGHT [ - [ TIME_ZONE_INFORMATION-Bias ] - [ TIME_ZONE_INFORMATION-DaylightBias ] bi + - ] } + { TIME_ZONE_ID_UNKNOWN [ Bias>> ] } + { TIME_ZONE_ID_STANDARD [ Bias>> ] } + { TIME_ZONE_ID_DAYLIGHT [ [ Bias>> ] [ DaylightBias>> ] bi + ] } } case neg 60 /mod 0 ; diff --git a/basis/windows/kernel32/kernel32.factor b/basis/windows/kernel32/kernel32.factor index 50a03945f3..30007bb5a0 100755 --- a/basis/windows/kernel32/kernel32.factor +++ b/basis/windows/kernel32/kernel32.factor @@ -226,14 +226,14 @@ STRUCT: SYSTEMTIME { wSecond WORD } { wMilliseconds WORD } ; -C-STRUCT: TIME_ZONE_INFORMATION - { "LONG" "Bias" } - { { "WCHAR" 32 } "StandardName" } - { "SYSTEMTIME" "StandardDate" } - { "LONG" "StandardBias" } - { { "WCHAR" 32 } "DaylightName" } - { "SYSTEMTIME" "DaylightDate" } - { "LONG" "DaylightBias" } ; +STRUCT: TIME_ZONE_INFORMATION + { Bias LONG } + { StandardName WCHAR[32] } + { StandardDate SYSTEMTIME } + { StandardBias LONG } + { DaylightName WCHAR[32] } + { DaylightDate SYSTEMTIME } + { DaylightBias LONG } ; STRUCT: FILETIME { dwLowDateTime DWORD }