Fix windows-time>FILETIME (why was this broken for so long?)
parent
89255e08c1
commit
b14c49f1a5
|
@ -11,8 +11,9 @@ IN: windows.time
|
||||||
1601 1 1 0 0 0 instant <timestamp> ;
|
1601 1 1 0 0 0 instant <timestamp> ;
|
||||||
|
|
||||||
: FILETIME>windows-time ( FILETIME -- n )
|
: FILETIME>windows-time ( FILETIME -- n )
|
||||||
[ FILETIME-dwLowDateTime ] keep
|
[ FILETIME-dwLowDateTime ]
|
||||||
FILETIME-dwHighDateTime >64bit ;
|
[ FILETIME-dwHighDateTime ]
|
||||||
|
bi >64bit ;
|
||||||
|
|
||||||
: windows-time>timestamp ( n -- timestamp )
|
: windows-time>timestamp ( n -- timestamp )
|
||||||
10000000 /i seconds windows-1601 swap time+ ;
|
10000000 /i seconds windows-1601 swap time+ ;
|
||||||
|
@ -28,12 +29,12 @@ IN: windows.time
|
||||||
: windows-time>FILETIME ( n -- FILETIME )
|
: windows-time>FILETIME ( n -- FILETIME )
|
||||||
"FILETIME" <c-object>
|
"FILETIME" <c-object>
|
||||||
[
|
[
|
||||||
[ 32 bits set-FILETIME-dwLowDateTime ] 2keep
|
[ [ 32 bits ] dip set-FILETIME-dwLowDateTime ]
|
||||||
[ -32 shift ] dip set-FILETIME-dwHighDateTime
|
[ [ -32 shift ] dip set-FILETIME-dwHighDateTime ] 2bi
|
||||||
] keep ;
|
] keep ;
|
||||||
|
|
||||||
: timestamp>FILETIME ( timestamp -- FILETIME/f )
|
: timestamp>FILETIME ( timestamp -- FILETIME/f )
|
||||||
[ >gmt timestamp>windows-time windows-time>FILETIME ] [ f ] if* ;
|
dup [ >gmt timestamp>windows-time windows-time>FILETIME ] when ;
|
||||||
|
|
||||||
: FILETIME>timestamp ( FILETIME -- timestamp/f )
|
: FILETIME>timestamp ( FILETIME -- timestamp/f )
|
||||||
FILETIME>windows-time windows-time>timestamp ;
|
FILETIME>windows-time windows-time>timestamp ;
|
||||||
|
|
Loading…
Reference in New Issue