Implement set-time on Windows
parent
d487a4b045
commit
11d20228f1
|
|
@ -1,6 +1,6 @@
|
||||||
USING: calendar namespaces alien.c-types system
|
USING: calendar namespaces alien.c-types system
|
||||||
windows.kernel32 kernel math combinators windows.errors
|
windows.kernel32 kernel math combinators windows.errors
|
||||||
accessors classes.struct ;
|
accessors classes.struct calendar.format math.functions ;
|
||||||
IN: calendar.windows
|
IN: calendar.windows
|
||||||
|
|
||||||
M: windows gmt-offset ( -- hours minutes seconds )
|
M: windows gmt-offset ( -- hours minutes seconds )
|
||||||
|
|
@ -11,3 +11,28 @@ M: windows gmt-offset ( -- hours minutes seconds )
|
||||||
{ TIME_ZONE_ID_STANDARD [ Bias>> ] }
|
{ TIME_ZONE_ID_STANDARD [ Bias>> ] }
|
||||||
{ TIME_ZONE_ID_DAYLIGHT [ [ Bias>> ] [ DaylightBias>> ] bi + ] }
|
{ TIME_ZONE_ID_DAYLIGHT [ [ Bias>> ] [ DaylightBias>> ] bi + ] }
|
||||||
} case neg 60 /mod 0 ;
|
} case neg 60 /mod 0 ;
|
||||||
|
|
||||||
|
: timestamp>SYSTEMTIME ( timestamp -- SYSTEMTIME )
|
||||||
|
{
|
||||||
|
[ year>> ]
|
||||||
|
[ month>> ]
|
||||||
|
[ day-of-week ]
|
||||||
|
[ day>> ]
|
||||||
|
[ hour>> ]
|
||||||
|
[ minute>> ]
|
||||||
|
[
|
||||||
|
second>> dup floor
|
||||||
|
[ nip >integer ]
|
||||||
|
[ - 1000 * >integer ] 2bi
|
||||||
|
]
|
||||||
|
} cleave \ SYSTEMTIME <struct-boa> ;
|
||||||
|
|
||||||
|
: SYSTEMTIME>timestamp ( SYSTEMTIME -- timestamp )
|
||||||
|
{
|
||||||
|
[ wYear>> ]
|
||||||
|
[ wMonth>> ]
|
||||||
|
[ wDay>> ]
|
||||||
|
[ wHour>> ]
|
||||||
|
[ wMinute>> ]
|
||||||
|
[ [ wSecond>> ] [ wMilliseconds>> 1000 /f ] bi + ]
|
||||||
|
} cleave gmt-offset-duration <timestamp> ;
|
||||||
|
|
|
||||||
|
|
@ -1800,7 +1800,7 @@ FUNCTION: BOOL SetProcessPriorityBoost ( HANDLE hProcess, BOOL disablePriorityBo
|
||||||
! FUNCTION: SetProcessWorkingSetSize
|
! FUNCTION: SetProcessWorkingSetSize
|
||||||
! FUNCTION: SetStdHandle
|
! FUNCTION: SetStdHandle
|
||||||
! FUNCTION: SetSystemPowerState
|
! FUNCTION: SetSystemPowerState
|
||||||
! FUNCTION: SetSystemTime
|
FUNCTION: BOOL SetSystemTime ( SYSTEMTIME* lpSystemTime ) ;
|
||||||
! FUNCTION: SetSystemTimeAdjustment
|
! FUNCTION: SetSystemTimeAdjustment
|
||||||
! FUNCTION: SetTapeParameters
|
! FUNCTION: SetTapeParameters
|
||||||
! FUNCTION: SetTapePosition
|
! FUNCTION: SetTapePosition
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,14 @@
|
||||||
! Copyright (C) 2010 Doug Coleman.
|
! Copyright (C) 2010 Doug Coleman.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: system ;
|
USING: combinators kernel system vocabs.loader ;
|
||||||
IN: time
|
IN: time
|
||||||
|
|
||||||
HOOK: set-time os ( timestamp -- )
|
HOOK: set-time os ( timestamp -- )
|
||||||
HOOK: adjust-time-monotonic os ( timestamp -- seconds )
|
HOOK: adjust-time-monotonic os ( timestamp -- seconds )
|
||||||
|
|
||||||
|
os {
|
||||||
|
{ [ dup macosx? ] [ drop "time.macosx" require ] }
|
||||||
|
{ [ dup windows? ] [ drop "time.windows" require ] }
|
||||||
|
{ [ dup unix? ] [ drop "time.unix" require ] }
|
||||||
|
[ drop ]
|
||||||
|
} cond
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Doug Coleman
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
! Copyright (C) 2010 Doug Coleman.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: calendar.windows system time windows.errors
|
||||||
|
windows.kernel32 kernel classes.struct calendar ;
|
||||||
|
IN: time.windows
|
||||||
|
|
||||||
|
: windows-system-time ( -- SYSTEMTIME )
|
||||||
|
SYSTEMTIME <struct> [ GetSystemTime ] keep ;
|
||||||
|
|
||||||
|
M: windows set-time
|
||||||
|
>gmt
|
||||||
|
timestamp>SYSTEMTIME SetSystemTime win32-error=0/f ;
|
||||||
Loading…
Reference in New Issue