~ chicken-core (chicken-5) 979f1a38897a9ec6c662ee02e331f4c16097457a


commit 979f1a38897a9ec6c662ee02e331f4c16097457a
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Sat Feb 17 17:08:52 2018 +1300
Commit:     Peter Bex <peter@more-magic.net>
CommitDate: Sat Feb 24 15:00:45 2018 +0100

    Move `errno' from toplevel to chicken.errno
    
    Signed-off-by: Peter Bex <peter@more-magic.net>

diff --git a/chicken.import.scm b/chicken.import.scm
index c990a079..67116e23 100644
--- a/chicken.import.scm
+++ b/chicken.import.scm
@@ -46,7 +46,6 @@
    (enable-warnings . chicken.base#enable-warnings)
    (equal=? . chicken.base#equal=?)
    (er-macro-transformer . chicken.syntax#er-macro-transformer)
-   errno
    (error . chicken.base#error)
    (eval-handler . chicken.eval#eval-handler)
    (exact-integer? . chicken.base#exact-integer?)
diff --git a/library.scm b/library.scm
index 12bbe607..dd269c23 100644
--- a/library.scm
+++ b/library.scm
@@ -3208,8 +3208,7 @@ EOF
 	      (let ((c (##core#inline "C_read_char" p)))
 		(cond
 		 ((eq? -1 c)
-		  (##sys#update-errno)
-		  (if (eq? (errno) (foreign-value "EINTR" int))
+		  (if (eq? (##sys#update-errno) (foreign-value "EINTR" int))
 		      (##sys#dispatch-interrupt loop)
 		      (##sys#signal-hook
 		       #:file-error 'read-char
@@ -3221,8 +3220,7 @@ EOF
 	      (let ((c (##core#inline "C_peek_char" p)))
 		(cond
 		 ((eq? -1 c)
-		  (##sys#update-errno)
-		  (if (eq? (errno) (foreign-value "EINTR" int))
+		  (if (eq? (##sys#update-errno) (foreign-value "EINTR" int))
 		      (##sys#dispatch-interrupt loop)
 		      (##sys#signal-hook
 		       #:file-error 'peek-char
@@ -3246,8 +3244,7 @@ EOF
 		(cond ((eof-object? len) ; EOF returns 0 bytes read
 		       act)
 		      ((fx< len 0)
-		       (##sys#update-errno)
-		       (if (eq? (errno) (foreign-value "EINTR" int))
+		       (if (eq? (##sys#update-errno) (foreign-value "EINTR" int))
 			   (##sys#dispatch-interrupt
 			    (lambda ()
 			      (loop (fx- rem len) (fx+ act len) (fx+ start len))))
@@ -3281,8 +3278,7 @@ EOF
 				   (##sys#string-append result buffer)
 				   #t)) ]
 			((fx< n 0)
-			 (##sys#update-errno)
-			 (if (eq? (errno) (foreign-value "EINTR" int))
+			 (if (eq? (##sys#update-errno) (foreign-value "EINTR" int))
 			     (let ((n (fx- (fxneg n) 1)))
 			       (##sys#dispatch-interrupt
 				(lambda ()
@@ -5767,14 +5763,14 @@ EOF
 
 ;;; Accessing "errno":
 
-(define-foreign-variable ##sys#errno int "errno")
+(define-foreign-variable _errno int "errno")
 
 (define ##sys#update-errno)
-(define errno)
+(define ##sys#errno)
 
-(let ([rn 0])
-  (set! ##sys#update-errno (lambda () (set! rn ##sys#errno) rn))
-  (set! errno (lambda () rn)) )
+(let ((n 0))
+  (set! ##sys#update-errno (lambda () (set! n _errno) n))
+  (set! ##sys#errno (lambda () n)))
 
 
 ;;; Format error string for unterminated here-docs:
diff --git a/posix.scm b/posix.scm
index d29a51f0..f8f7f1da 100644
--- a/posix.scm
+++ b/posix.scm
@@ -104,10 +104,8 @@
    (include "posixwin.scm"))))
 
 (module chicken.errno *
-(import scheme
-	(only chicken errno)
-	(chicken module))
-(export errno)
+(import scheme)
+(define (errno) (##sys#errno))
 (define errno/2big _e2big)
 (define errno/acces _eacces)
 (define errno/again _eagain)
diff --git a/types.db b/types.db
index 6c8e58b8..5c73ad30 100644
--- a/types.db
+++ b/types.db
@@ -1176,7 +1176,6 @@
 (chicken.time#current-seconds (#(procedure #:clean) chicken.time#current-seconds () integer))
 (chicken.time#current-milliseconds (#(procedure #:clean) chicken.time#current-milliseconds () integer))
 
-(errno (#(procedure #:clean) errno () fixnum))
 (##sys#error (procedure ##sys#error (* #!rest) noreturn))
 (##sys#signal-hook (procedure ##sys#signal-hook (* #!rest) noreturn))
 (##sys#debug-mode? (procedure ##sys#debug-mode? () boolean)
@@ -1865,6 +1864,7 @@
 
 ;; errno
 
+(chicken.errno#errno (#(procedure #:clean) chicken.errno#errno () fixnum))
 (chicken.errno#errno/2big fixnum)
 (chicken.errno#errno/acces fixnum)
 (chicken.errno#errno/again fixnum)
Trap