33 lines
		
	
	
		
			784 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			784 B
		
	
	
	
		
			Factor
		
	
	
USING: alien alien.c-types arrays kernel structs
 | 
						|
math unix calendar namespaces ;
 | 
						|
IN: calendar.unix
 | 
						|
 | 
						|
TUPLE: unix-calendar ;
 | 
						|
 | 
						|
T{ unix-calendar } calendar-impl set-global
 | 
						|
 | 
						|
: get-time
 | 
						|
    f time <uint> localtime ;
 | 
						|
 | 
						|
: timezone-name
 | 
						|
    get-time tm-zone ;
 | 
						|
 | 
						|
M: unix-calendar gmt-offset
 | 
						|
    get-time tm-gmtoff 3600 / ;
 | 
						|
 | 
						|
: timestamp>timeval ( timestamp -- timeval )
 | 
						|
    timestamp>unix-time 1000 * make-timeval ;
 | 
						|
 | 
						|
: timeval>timestamp ( timeval -- timestamp )
 | 
						|
    [ timeval-sec ] keep
 | 
						|
    timeval-usec 1000000 / + unix-time>timestamp ;
 | 
						|
 | 
						|
: timestamp>timespec ( timestamp -- timespec )
 | 
						|
    timestamp>unix-time "timespec" <c-object>
 | 
						|
    [ set-timespec-sec ] keep ;
 | 
						|
 | 
						|
: timespec>timestamp ( timespec -- timestamp )
 | 
						|
    [ timespec-sec ] keep
 | 
						|
    timespec-nsec 1000000000 / +
 | 
						|
    unix-time>timestamp ;
 |