~ 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