~ 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