~ chicken-core (chicken-5) a5c949987b462960ed9c127032a82261f1f43cee
commit a5c949987b462960ed9c127032a82261f1f43cee
Author: Peter Bex <peter@more-magic.net>
AuthorDate: Mon Apr 30 16:06:59 2018 +0200
Commit: Kooda <kooda@upyum.com>
CommitDate: Tue May 1 11:08:23 2018 +0200
Refactor chicken.time.posix so it no longer refers to chicken.posix
Similar to the previous commit.
One small change:
- Moved ##sys#decode-seconds from library.scm to posix-common.scm
and renamed it to decode-seconds. It is used nowhere else.
Signed-off-by: Kooda <kooda@upyum.com>
diff --git a/library.scm b/library.scm
index febb6f3c..d05d85c2 100644
--- a/library.scm
+++ b/library.scm
@@ -1044,7 +1044,6 @@ EOF
(define ##sys#ensure-heap-reserve (##core#primitive "C_ensure_heap_reserve"))
(define ##sys#symbol-table-info (##core#primitive "C_get_symbol_table_info"))
(define ##sys#memory-info (##core#primitive "C_get_memory_info"))
-(define ##sys#decode-seconds (##core#primitive "C_decode_seconds"))
(define (##sys#start-timer)
(##sys#gc #t)
diff --git a/posix-common.scm b/posix-common.scm
index 29ab9687..3218d06d 100644
--- a/posix-common.scm
+++ b/posix-common.scm
@@ -527,20 +527,24 @@ EOF
;;; Time related things:
+(define decode-seconds (##core#primitive "C_decode_seconds"))
+
(define (check-time-vector loc tm)
(##sys#check-vector tm loc)
(when (fx< (##sys#size tm) 10)
(##sys#error loc "time vector too short" tm) ) )
-(define (seconds->local-time #!optional (secs (current-seconds)))
- (##sys#check-exact-integer secs 'seconds->local-time)
- (##sys#decode-seconds secs #f) )
+(set! chicken.time.posix#seconds->local-time
+ (lambda (#!optional (secs (current-seconds)))
+ (##sys#check-exact-integer secs 'seconds->local-time)
+ (decode-seconds secs #f) ))
-(define (seconds->utc-time #!optional (secs (current-seconds)))
- (##sys#check-exact-integer secs 'seconds->utc-time)
- (##sys#decode-seconds secs #t) )
+(set! chicken.time.posix#seconds->utc-time
+ (lambda (#!optional (secs (current-seconds)))
+ (##sys#check-exact-integer secs 'seconds->utc-time)
+ (decode-seconds secs #t) ) )
-(define seconds->string
+(set! chicken.time.posix#seconds->string
(let ([ctime (foreign-lambda c-string "C_ctime" integer)])
(lambda (#!optional (secs (current-seconds)))
(##sys#check-exact-integer secs 'seconds->string)
@@ -549,7 +553,7 @@ EOF
(##sys#substring str 0 (fx- (##sys#size str) 1))
(##sys#error 'seconds->string "cannot convert seconds to string" secs) ) ) ) ) )
-(define local-time->seconds
+(set! chicken.time.posix#local-time->seconds
(let ((tm-size (foreign-value "sizeof(struct tm)" int)))
(lambda (tm)
(check-time-vector 'local-time->seconds tm)
@@ -558,7 +562,7 @@ EOF
(##sys#error 'local-time->seconds "cannot convert time vector to seconds" tm)
t)))))
-(define time->string
+(set! chicken.time.posix#time->string
(let ((asctime (foreign-lambda c-string "C_asctime" scheme-object scheme-pointer))
(strftime (foreign-lambda c-string "C_strftime" scheme-object scheme-object scheme-pointer))
(tm-size (foreign-value "sizeof(struct tm)" int)))
diff --git a/posix.scm b/posix.scm
index bdd8c5d2..e58b6247 100644
--- a/posix.scm
+++ b/posix.scm
@@ -64,6 +64,7 @@
(import scheme)
+;; These are all set! inside the posix module
(define create-fifo)
(define create-symbolic-link)
(define read-symbolic-link)
@@ -161,6 +162,26 @@
(define set-file-times!)
) ; chicken.file.posix
+
+(module chicken.time.posix
+ (seconds->utc-time utc-time->seconds seconds->local-time
+ seconds->string local-time->seconds string->time time->string
+ local-timezone-abbreviation)
+
+(import scheme)
+
+;; These are all set! inside the posix module
+(define seconds->utc-time)
+(define utc-time->seconds)
+(define seconds->local-time)
+(define seconds->string)
+(define local-time->seconds)
+(define string->time)
+(define time->string)
+(define local-timezone-abbreviation)
+) ; chicken.time.posix
+
+
;; This module really does nothing. It is used to keep all the posix
;; stuff in one place, in a clean namespace. The included file will
;; set! values from the modules defined above.
@@ -171,14 +192,12 @@
current-effective-group-id current-effective-user-id
current-effective-user-name current-group-id current-process-id
current-user-id current-user-name
- local-time->seconds local-timezone-abbreviation
open-input-pipe open-output-pipe
parent-process-id
process process* process-execute process-fork
process-group-id process-run process-signal process-sleep
process-spawn process-wait
- seconds->local-time seconds->string seconds->utc-time set-alarm!
- set-root-directory! set-signal-handler! set-signal-mask!
+ set-alarm! set-root-directory! set-signal-handler! set-signal-mask!
signal-handler signal-mask signal-mask! signal-masked? signal-unmask!
signal/abrt signal/alrm signal/break signal/bus signal/chld
signal/cont signal/fpe signal/hup signal/ill signal/int signal/io
@@ -186,9 +205,8 @@
signal/stop signal/term signal/trap signal/tstp signal/urg
signal/usr1 signal/usr2 signal/vtalrm signal/winch signal/xcpu
signal/xfsz signals-list spawn/detach spawn/nowait
- spawn/nowaito spawn/overlay spawn/wait string->time
- time->string user-information
- utc-time->seconds with-input-from-pipe with-output-to-pipe)
+ spawn/nowaito spawn/overlay spawn/wait user-information
+ with-input-from-pipe with-output-to-pipe)
(import scheme
chicken.base
@@ -210,6 +228,7 @@
) ; chicken.posix [internal, no implib generated]
+
(module chicken.errno *
(import scheme)
(define (errno) (##sys#errno))
@@ -255,23 +274,6 @@
) ; chicken.errno
-(module chicken.time.posix
- (seconds->utc-time utc-time->seconds seconds->local-time
- seconds->string local-time->seconds string->time time->string
- local-timezone-abbreviation)
-
-(import scheme)
-
-(define seconds->utc-time chicken.posix#seconds->utc-time)
-(define utc-time->seconds chicken.posix#utc-time->seconds)
-(define seconds->local-time chicken.posix#seconds->local-time)
-(define seconds->string chicken.posix#seconds->string)
-(define local-time->seconds chicken.posix#local-time->seconds)
-(define string->time chicken.posix#string->time)
-(define time->string chicken.posix#time->string)
-(define local-timezone-abbreviation chicken.posix#local-timezone-abbreviation)
-) ; chicken.time.posix
-
(module chicken.process
(qs system system* process-execute process-fork process-run
process-signal process-spawn process-wait call-with-input-pipe
diff --git a/posixunix.scm b/posixunix.scm
index 61943ac8..29cfab7e 100644
--- a/posixunix.scm
+++ b/posixunix.scm
@@ -1101,7 +1101,7 @@ static int set_file_mtime(char *filename, C_word atime, C_word mtime)
;;; Time related things:
-(define string->time
+(set! chicken.time.posix#string->time
(let ((strptime (foreign-lambda scheme-object "C_strptime" scheme-object scheme-object scheme-object scheme-pointer))
(tm-size (foreign-value "sizeof(struct tm)" int)))
(lambda (tim #!optional (fmt "%a %b %e %H:%M:%S %Z %Y"))
@@ -1109,7 +1109,7 @@ static int set_file_mtime(char *filename, C_word atime, C_word mtime)
(##sys#check-string fmt 'string->time)
(strptime (##sys#make-c-string tim 'string->time) (##sys#make-c-string fmt) (make-vector 10 #f) (##sys#make-string tm-size #\nul)) ) ) )
-(define utc-time->seconds
+(set! chicken.time.posix#utc-time->seconds
(let ((tm-size (foreign-value "sizeof(struct tm)" int)))
(lambda (tm)
(check-time-vector 'utc-time->seconds tm)
@@ -1118,7 +1118,7 @@ static int set_file_mtime(char *filename, C_word atime, C_word mtime)
(##sys#error 'utc-time->seconds "cannot convert time vector to seconds" tm)
t)))))
-(define local-timezone-abbreviation
+(set! chicken.time.posix#local-timezone-abbreviation
(foreign-lambda* c-string ()
"\n#if !defined(__CYGWIN__) && !defined(__SVR4) && !defined(__uClinux__) && !defined(__hpux__) && !defined(_AIX)\n"
"time_t clock = time(NULL);"
diff --git a/posixwin.scm b/posixwin.scm
index bccb2ce0..382d8f77 100644
--- a/posixwin.scm
+++ b/posixwin.scm
@@ -774,7 +774,7 @@ static int set_file_mtime(char *filename, C_word atime, C_word mtime)
;;; Time related things:
-(define local-timezone-abbreviation
+(set! chicken.time.posix#local-timezone-abbreviation
(foreign-lambda* c-string ()
"char *z = (_daylight ? _tzname[1] : _tzname[0]);\n"
"C_return(z);") )
@@ -992,8 +992,8 @@ static int set_file_mtime(char *filename, C_word atime, C_word mtime)
(define-unimplemented signal-masked?)
(define-unimplemented signal-unmask!)
(define-unimplemented user-information)
-(define-unimplemented utc-time->seconds)
-(define-unimplemented string->time)
+(set!-unimplemented chicken.time.posix#utc-time->seconds)
+(set!-unimplemented chicken.time.posix#string->time)
;; Unix-only definitions
(set! chicken.file.posix#fcntl/dupfd 0)
diff --git a/types.db b/types.db
index 77f3d24c..79044d7a 100644
--- a/types.db
+++ b/types.db
@@ -2022,6 +2022,16 @@
(chicken.file.posix#set-file-times! (#(procedure #:clean #:enforce) chicken.file.posix#set-file-times! (string #!optional (or false integer) (or false integer)) undefined))
+;; time.posix
+
+(chicken.time.posix#seconds->local-time (#(procedure #:clean #:enforce) chicken.time.posix#seconds->local-time (#!optional integer) (vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)))
+(chicken.time.posix#seconds->string (#(procedure #:clean #:enforce) chicken.time.posix#seconds->string (#!optional integer) string))
+(chicken.time.posix#seconds->utc-time (#(procedure #:clean #:enforce) chicken.time.posix#seconds->utc-time (#!optional integer) (vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)))
+(chicken.time.posix#utc-time->seconds (#(procedure #:clean #:enforce) chicken.time.posix#utc-time->seconds ((vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)) integer))
+(chicken.time.posix#local-time->seconds (#(procedure #:clean #:enforce) chicken.time.posix#local-time->seconds ((vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)) integer))
+(chicken.time.posix#local-timezone-abbreviation (#(procedure #:clean) chicken.time.posix#local-timezone-abbreviation () string))
+(chicken.time.posix#string->time (#(procedure #:clean #:enforce) chicken.time.posix#string->time (string #!optional string) (vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)))
+(chicken.time.posix#time->string (#(procedure #:clean #:enforce) chicken.time.posix#time->string ((vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum) #!optional string) string))
;; posix
@@ -2040,8 +2050,6 @@
(chicken.posix#current-process-id (#(procedure #:clean) chicken.posix#current-process-id () fixnum))
(chicken.posix#current-user-id (#(procedure #:clean) chicken.posix#current-user-id () fixnum))
(chicken.posix#current-user-name (#(procedure #:clean) chicken.posix#current-user-name () string))
-(chicken.posix#local-time->seconds (#(procedure #:clean #:enforce) chicken.posix#local-time->seconds ((vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)) integer))
-(chicken.posix#local-timezone-abbreviation (#(procedure #:clean) chicken.posix#local-timezone-abbreviation () string))
(chicken.posix#open-input-pipe (#(procedure #:clean #:enforce) chicken.posix#open-input-pipe (string #!optional symbol) input-port))
(chicken.posix#open-output-pipe (#(procedure #:clean #:enforce) chicken.posix#open-output-pipe (string #!optional symbol) output-port))
(chicken.posix#parent-process-id (#(procedure #:clean) chicken.posix#parent-process-id () fixnum))
@@ -2060,9 +2068,6 @@
(chicken.posix#process-spawn
(#(procedure #:clean #:enforce) chicken.posix#process-spawn (fixnum string #!optional (list-of string) (list-of (pair string string)) boolean) fixnum))
(chicken.posix#process-wait (#(procedure #:clean #:enforce) chicken.posix#process-wait (#!optional fixnum *) fixnum fixnum fixnum))
-(chicken.posix#seconds->local-time (#(procedure #:clean #:enforce) chicken.posix#seconds->local-time (#!optional integer) (vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)))
-(chicken.posix#seconds->string (#(procedure #:clean #:enforce) chicken.posix#seconds->string (#!optional integer) string))
-(chicken.posix#seconds->utc-time (#(procedure #:clean #:enforce) chicken.posix#seconds->utc-time (#!optional integer) (vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)))
(chicken.posix#set-alarm! (#(procedure #:clean #:enforce) chicken.posix#set-alarm! (integer) integer))
(chicken.posix#set-root-directory! (#(procedure #:clean #:enforce) chicken.posix#set-root-directory! (string) undefined))
(chicken.posix#set-signal-handler! (#(procedure #:clean #:enforce) chicken.posix#set-signal-handler! (fixnum (or false (procedure (fixnum) . *))) undefined))
@@ -2105,10 +2110,7 @@
(chicken.posix#spawn/nowaito fixnum)
(chicken.posix#spawn/detach fixnum)
(chicken.posix#process-sleep (#(procedure #:clean #:enforce) chicken.posix#process-sleep (fixnum) fixnum))
-(chicken.posix#string->time (#(procedure #:clean #:enforce) chicken.posix#string->time (string #!optional string) (vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)))
-(chicken.posix#time->string (#(procedure #:clean #:enforce) chicken.posix#time->string ((vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum) #!optional string) string))
(chicken.posix#user-information (#(procedure #:clean #:enforce) chicken.posix#user-information ((or string fixnum) #!optional *) *))
-(chicken.posix#utc-time->seconds (#(procedure #:clean #:enforce) chicken.posix#utc-time->seconds ((vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)) integer))
(chicken.posix#with-input-from-pipe (#(procedure #:enforce) chicken.posix#with-input-from-pipe (string (procedure () . *) #!optional symbol) . *))
(chicken.posix#with-output-to-pipe (#(procedure #:enforce) chicken.posix#with-output-to-pipe (string (procedure () . *) #!optional symbol) . *))
Trap