~ chicken-core (chicken-5) 3f28786b1440af1efdf2207ddf5d8818e08fc6fb
commit 3f28786b1440af1efdf2207ddf5d8818e08fc6fb Author: Evan Hanson <evhan@foldling.org> AuthorDate: Sat Jun 4 00:03:24 2016 +1200 Commit: Peter Bex <peter@more-magic.net> CommitDate: Thu Jun 16 13:38:03 2016 +0200 Move errno values to new chicken.errno module Signed-off-by: Peter Bex <peter@more-magic.net> diff --git a/README b/README index 2a92808d..eaf9f932 100644 --- a/README +++ b/README @@ -288,6 +288,7 @@ | | |-- chicken.continuation.import.so | | |-- chicken.csi.import.so | | |-- chicken.data-structures.import.so + | | |-- chicken.errno.import.so | | |-- chicken.eval.import.so | | |-- chicken.expand.import.so | | |-- chicken.files.import.so diff --git a/chicken-install.scm b/chicken-install.scm index 68d08c6c..72e6eb26 100644 --- a/chicken-install.scm +++ b/chicken-install.scm @@ -48,6 +48,7 @@ "chicken.continuation.import.so" "chicken.csi.import.so" "chicken.data-structures.import.so" + "chicken.errno.import.so" "chicken.eval.import.so" "chicken.expand.import.so" "chicken.files.import.so" diff --git a/defaults.make b/defaults.make index c9cf4587..011a55c4 100644 --- a/defaults.make +++ b/defaults.make @@ -264,8 +264,8 @@ CHICKEN_PROGRAM_OPTIONS += $(if $(PROFILE_OBJECTS),-profile) PRIMITIVE_IMPORT_LIBRARIES = chicken chicken.csi chicken.foreign DYNAMIC_IMPORT_LIBRARIES = setup-api setup-download srfi-4 -DYNAMIC_CHICKEN_IMPORT_LIBRARIES = bitwise fixnum flonum format gc io \ - keyword locative memory posix pretty-print random time +DYNAMIC_CHICKEN_IMPORT_LIBRARIES = bitwise errno fixnum flonum format \ + gc io keyword locative memory posix pretty-print random time DYNAMIC_CHICKEN_COMPILER_IMPORT_LIBRARIES = user-pass DYNAMIC_CHICKEN_UNIT_IMPORT_LIBRARIES = continuation data-structures \ eval expand files internal irregex lolevel pathname ports \ diff --git a/distribution/manifest b/distribution/manifest index 15dad8bd..711d55c7 100644 --- a/distribution/manifest +++ b/distribution/manifest @@ -263,6 +263,8 @@ chicken.csi.import.scm chicken.csi.import.c chicken.data-structures.import.scm chicken.data-structures.import.c +chicken.errno.import.scm +chicken.errno.import.c chicken.eval.import.scm chicken.eval.import.c chicken.expand.import.scm diff --git a/manual/Unit posix b/manual/Unit posix index 6d1d6fb8..0456fb8d 100644 --- a/manual/Unit posix +++ b/manual/Unit posix @@ -1157,6 +1157,7 @@ defaults to {{0}}. These variables contain error codes as returned by {{errno}}. +They are provided by the {{(chicken errno)}} module. === Finding files diff --git a/posixunix.scm b/posixunix.scm index 73e52a2a..d358d845 100644 --- a/posixunix.scm +++ b/posixunix.scm @@ -44,16 +44,9 @@ current-effective-group-id current-effective-user-id current-effective-user-name get-environment-variables current-group-id current-process-id current-user-id current-user-name - delete-directory directory directory? duplicate-fileno errno/2big - errno/acces errno/again errno/badf errno/busy errno/child - errno/deadlk errno/dom errno/exist errno/fault errno/fbig errno/ilseq - errno/intr errno/inval errno/io errno/isdir errno/mfile errno/mlink - errno/nametoolong errno/nfile errno/nodev errno/noent errno/noexec - errno/nolck errno/nomem errno/nospc errno/nosys errno/notdir - errno/notempty errno/notty errno/nxio errno/perm errno/pipe - errno/range errno/rofs errno/spipe errno/srch errno/wouldblock - errno/xdev fcntl/dupfd fcntl/getfd fcntl/getfl fcntl/setfd - fcntl/setfl fifo? file-access-time file-change-time + delete-directory directory directory? duplicate-fileno + fcntl/dupfd fcntl/getfd fcntl/getfl fcntl/setfd fcntl/setfl + fifo? file-access-time file-change-time file-creation-mode file-close file-control file-execute-access? file-link file-lock file-lock/blocking file-mkstemp file-modification-time file-open file-owner file-permissions @@ -1053,49 +1046,6 @@ EOF (##sys#error 'initialize-groups "cannot initialize supplementary group ids" user id) ) ) ) ) -;;; More errno codes: - -(define errno/perm _eperm) -(define errno/noent _enoent) -(define errno/srch _esrch) -(define errno/intr _eintr) -(define errno/io _eio) -(define errno/noexec _enoexec) -(define errno/badf _ebadf) -(define errno/child _echild) -(define errno/nomem _enomem) -(define errno/acces _eacces) -(define errno/fault _efault) -(define errno/busy _ebusy) -(define errno/notdir _enotdir) -(define errno/isdir _eisdir) -(define errno/inval _einval) -(define errno/mfile _emfile) -(define errno/nospc _enospc) -(define errno/spipe _espipe) -(define errno/pipe _epipe) -(define errno/again _eagain) -(define errno/rofs _erofs) -(define errno/exist _eexist) -(define errno/wouldblock _ewouldblock) - -(define errno/2big 0) -(define errno/deadlk 0) -(define errno/dom 0) -(define errno/fbig 0) -(define errno/ilseq 0) -(define errno/mlink 0) -(define errno/nametoolong 0) -(define errno/nfile 0) -(define errno/nodev 0) -(define errno/nolck 0) -(define errno/nosys 0) -(define errno/notempty 0) -(define errno/notty 0) -(define errno/nxio 0) -(define errno/range 0) -(define errno/xdev 0) - ;;; Permissions and owners: (define change-file-mode @@ -1819,4 +1769,48 @@ EOF (when (fx< (chroot dir) 0) (posix-error #:file-error 'set-root-directory! "unable to change root directory" dir) ) ) ) ) -) +) ; chicken.posix + +(module chicken.errno * +(import scheme chicken) +(export errno) +;; XXX TODO why aren't these set? +(define errno/2big 0) +(define errno/deadlk 0) +(define errno/dom 0) +(define errno/fbig 0) +(define errno/ilseq 0) +(define errno/mlink 0) +(define errno/nametoolong 0) +(define errno/nfile 0) +(define errno/nodev 0) +(define errno/nolck 0) +(define errno/nosys 0) +(define errno/notempty 0) +(define errno/notty 0) +(define errno/nxio 0) +(define errno/range 0) +(define errno/xdev 0) +(define errno/acces _eacces) +(define errno/again _eagain) +(define errno/badf _ebadf) +(define errno/busy _ebusy) +(define errno/child _echild) +(define errno/exist _eexist) +(define errno/fault _efault) +(define errno/intr _eintr) +(define errno/inval _einval) +(define errno/io _eio) +(define errno/isdir _eisdir) +(define errno/mfile _emfile) +(define errno/noent _enoent) +(define errno/noexec _enoexec) +(define errno/nomem _enomem) +(define errno/nospc _enospc) +(define errno/notdir _enotdir) +(define errno/perm _eperm) +(define errno/pipe _epipe) +(define errno/rofs _erofs) +(define errno/spipe _espipe) +(define errno/srch _esrch) +(define errno/wouldblock _ewouldblock)) diff --git a/posixwin.scm b/posixwin.scm index 3d60568f..b1ce436c 100644 --- a/posixwin.scm +++ b/posixwin.scm @@ -33,7 +33,6 @@ ; symbolic-link? ; set-signal-mask! signal-mask signal-masked? signal-mask! signal-unmask! ; user-information group-information get-groups set-groups! initialize-groups -; errno/wouldblock ; change-directory* ; change-file-owner ; current-user-id current-group-id current-effective-user-id current-effective-group-id @@ -669,16 +668,9 @@ EOF current-effective-group-id current-effective-user-id current-effective-user-name get-environment-variables current-group-id current-process-id current-user-id current-user-name - delete-directory directory directory? duplicate-fileno errno/2big - errno/acces errno/again errno/badf errno/busy errno/child - errno/deadlk errno/dom errno/exist errno/fault errno/fbig errno/ilseq - errno/intr errno/inval errno/io errno/isdir errno/mfile errno/mlink - errno/nametoolong errno/nfile errno/nodev errno/noent errno/noexec - errno/nolck errno/nomem errno/nospc errno/nosys errno/notdir - errno/notempty errno/notty errno/nxio errno/perm errno/pipe - errno/range errno/rofs errno/spipe errno/srch errno/wouldblock - errno/xdev #;fcntl/dupfd #;fcntl/getfd #;fcntl/getfl #;fcntl/setfd - #;fcntl/setfl fifo? file-access-time file-change-time + delete-directory directory directory? duplicate-fileno + #;fcntl/dupfd #;fcntl/getfd #;fcntl/getfl #;fcntl/setfd #;fcntl/setfl + fifo? file-access-time file-change-time file-creation-mode file-close #;file-control file-execute-access? file-link file-lock file-lock/blocking file-mkstemp file-modification-time file-open file-owner file-permissions @@ -1027,48 +1019,6 @@ EOF signal/segv signal/abrt signal/break)) -;;; More errno codes: - - -(define errno/perm _eperm) -(define errno/noent _enoent) -(define errno/srch _esrch) -(define errno/intr _eintr) -(define errno/io _eio) -(define errno/noexec _enoexec) -(define errno/badf _ebadf) -(define errno/child _echild) -(define errno/nomem _enomem) -(define errno/acces _eacces) -(define errno/fault _efault) -(define errno/busy _ebusy) -(define errno/exist _eexist) -(define errno/notdir _enotdir) -(define errno/isdir _eisdir) -(define errno/inval _einval) -(define errno/mfile _emfile) -(define errno/nospc _enospc) -(define errno/spipe _espipe) -(define errno/pipe _epipe) -(define errno/again _eagain) -(define errno/rofs _erofs) -(define errno/nxio _enxio) -(define errno/2big _e2big) -(define errno/xdev _exdev) -(define errno/nodev _enodev) -(define errno/nfile _enfile) -(define errno/notty _enotty) -(define errno/fbig _efbig) -(define errno/mlink _emlink) -(define errno/dom _edom) -(define errno/range _erange) -(define errno/deadlk _edeadlk) -(define errno/nametoolong _enametoolong) -(define errno/nolck _enolck) -(define errno/nosys _enosys) -(define errno/notempty _enotempty) -(define errno/ilseq _eilseq) - ;;; Permissions and owners: (define change-file-mode @@ -1473,8 +1423,6 @@ EOF (define-unimplemented utc-time->seconds) (define-unimplemented string->time) -(define errno/wouldblock 0) - (define (fifo? _) #f) (define open/fsync 0) @@ -1485,4 +1433,47 @@ EOF (define perm/isuid 0) (define perm/isvtx 0) -) +) ; chicken.posix + +(module chicken.errno * +(import scheme chicken) +(export errno) +(define errno/wouldblock 0) ; undefined on mingw +(define errno/2big _e2big) +(define errno/acces _eacces) +(define errno/again _eagain) +(define errno/badf _ebadf) +(define errno/busy _ebusy) +(define errno/child _echild) +(define errno/deadlk _edeadlk) +(define errno/dom _edom) +(define errno/exist _eexist) +(define errno/fault _efault) +(define errno/fbig _efbig) +(define errno/ilseq _eilseq) +(define errno/intr _eintr) +(define errno/inval _einval) +(define errno/io _eio) +(define errno/isdir _eisdir) +(define errno/mfile _emfile) +(define errno/mlink _emlink) +(define errno/nametoolong _enametoolong) +(define errno/nfile _enfile) +(define errno/nodev _enodev) +(define errno/noent _enoent) +(define errno/noexec _enoexec) +(define errno/nolck _enolck) +(define errno/nomem _enomem) +(define errno/nospc _enospc) +(define errno/nosys _enosys) +(define errno/notdir _enotdir) +(define errno/notempty _enotempty) +(define errno/notty _enotty) +(define errno/nxio _enxio) +(define errno/perm _eperm) +(define errno/pipe _epipe) +(define errno/range _erange) +(define errno/rofs _erofs) +(define errno/spipe _espipe) +(define errno/srch _esrch) +(define errno/xdev _exdev)) diff --git a/rules.make b/rules.make index a4a32936..abe5b3f0 100644 --- a/rules.make +++ b/rules.make @@ -519,6 +519,7 @@ $(foreach lib, $(filter-out chicken,$(COMPILER_OBJECTS_1)),\ # special cases for modules not corresponding directly to units $(eval $(call declare-emitted-import-lib-dependency,chicken.posix,$(POSIXFILE))) +$(eval $(call declare-emitted-import-lib-dependency,chicken.errno,$(POSIXFILE))) $(eval $(call declare-emitted-import-lib-dependency,chicken.bitwise,library)) $(eval $(call declare-emitted-import-lib-dependency,chicken.fixnum,library)) $(eval $(call declare-emitted-import-lib-dependency,chicken.flonum,library)) @@ -799,9 +800,13 @@ extras.c: $(SRCDIR)extras.scm $(SRCDIR)common-declarations.scm -emit-import-library chicken.pretty-print \ -emit-import-library chicken.random posixunix.c: $(SRCDIR)posixunix.scm $(SRCDIR)posix-common.scm $(SRCDIR)common-declarations.scm - $(bootstrap-lib) -emit-import-library chicken.posix + $(bootstrap-lib) \ + -emit-import-library chicken.errno \ + -emit-import-library chicken.posix posixwin.c: $(SRCDIR)posixwin.scm $(SRCDIR)posix-common.scm $(SRCDIR)common-declarations.scm - $(bootstrap-lib) -emit-import-library chicken.posix + $(bootstrap-lib) \ + -emit-import-library chicken.errno \ + -emit-import-library chicken.posix irregex.c: $(SRCDIR)irregex.scm $(SRCDIR)irregex-core.scm $(SRCDIR)irregex-utils.scm $(SRCDIR)common-declarations.scm $(bootstrap-lib) -emit-import-library chicken.irregex chicken-syntax.c: $(SRCDIR)chicken-syntax.scm $(SRCDIR)common-declarations.scm $(SRCDIR)mini-srfi-1.scm diff --git a/types.db b/types.db index 3c0ee1e2..a05bb1de 100644 --- a/types.db +++ b/types.db @@ -1850,6 +1850,47 @@ (chicken.ports#with-output-to-port (#(procedure #:enforce) chicken.ports#with-output-to-port (output-port (procedure () . *)) . *)) (chicken.ports#with-output-to-string (#(procedure #:enforce) chicken.ports#with-output-to-string ((procedure () . *)) . *)) +;; errno + +(chicken.errno#errno/2big fixnum) +(chicken.errno#errno/acces fixnum) +(chicken.errno#errno/again fixnum) +(chicken.errno#errno/badf fixnum) +(chicken.errno#errno/busy fixnum) +(chicken.errno#errno/child fixnum) +(chicken.errno#errno/deadlk fixnum) +(chicken.errno#errno/dom fixnum) +(chicken.errno#errno/exist fixnum) +(chicken.errno#errno/fault fixnum) +(chicken.errno#errno/fbig fixnum) +(chicken.errno#errno/ilseq fixnum) +(chicken.errno#errno/intr fixnum) +(chicken.errno#errno/inval fixnum) +(chicken.errno#errno/io fixnum) +(chicken.errno#errno/isdir fixnum) +(chicken.errno#errno/mfile fixnum) +(chicken.errno#errno/mlink fixnum) +(chicken.errno#errno/nametoolong fixnum) +(chicken.errno#errno/nfile fixnum) +(chicken.errno#errno/nodev fixnum) +(chicken.errno#errno/noent fixnum) +(chicken.errno#errno/noexec fixnum) +(chicken.errno#errno/nolck fixnum) +(chicken.errno#errno/nomem fixnum) +(chicken.errno#errno/nospc fixnum) +(chicken.errno#errno/nosys fixnum) +(chicken.errno#errno/notdir fixnum) +(chicken.errno#errno/notempty fixnum) +(chicken.errno#errno/notty fixnum) +(chicken.errno#errno/nxio fixnum) +(chicken.errno#errno/perm fixnum) +(chicken.errno#errno/pipe fixnum) +(chicken.errno#errno/range fixnum) +(chicken.errno#errno/rofs fixnum) +(chicken.errno#errno/spipe fixnum) +(chicken.errno#errno/srch fixnum) +(chicken.errno#errno/wouldblock fixnum) +(chicken.errno#errno/xdev fixnum) ;; posix @@ -1883,45 +1924,6 @@ (chicken.posix#directory (#(procedure #:clean #:enforce) chicken.posix#directory (#!optional string *) (list-of string))) (chicken.posix#directory? (#(procedure #:clean #:enforce) chicken.posix#directory? ((or string fixnum)) boolean)) (chicken.posix#duplicate-fileno (#(procedure #:clean #:enforce) chicken.posix#duplicate-fileno (fixnum #!optional fixnum) fixnum)) -(chicken.posix#errno/2big fixnum) -(chicken.posix#errno/acces fixnum) -(chicken.posix#errno/again fixnum) -(chicken.posix#errno/badf fixnum) -(chicken.posix#errno/busy fixnum) -(chicken.posix#errno/child fixnum) -(chicken.posix#errno/deadlk fixnum) -(chicken.posix#errno/dom fixnum) -(chicken.posix#errno/exist fixnum) -(chicken.posix#errno/fault fixnum) -(chicken.posix#errno/fbig fixnum) -(chicken.posix#errno/ilseq fixnum) -(chicken.posix#errno/intr fixnum) -(chicken.posix#errno/inval fixnum) -(chicken.posix#errno/io fixnum) -(chicken.posix#errno/isdir fixnum) -(chicken.posix#errno/mfile fixnum) -(chicken.posix#errno/mlink fixnum) -(chicken.posix#errno/nametoolong fixnum) -(chicken.posix#errno/nfile fixnum) -(chicken.posix#errno/nodev fixnum) -(chicken.posix#errno/noent fixnum) -(chicken.posix#errno/noexec fixnum) -(chicken.posix#errno/nolck fixnum) -(chicken.posix#errno/nomem fixnum) -(chicken.posix#errno/nospc fixnum) -(chicken.posix#errno/nosys fixnum) -(chicken.posix#errno/notdir fixnum) -(chicken.posix#errno/notempty fixnum) -(chicken.posix#errno/notty fixnum) -(chicken.posix#errno/nxio fixnum) -(chicken.posix#errno/perm fixnum) -(chicken.posix#errno/pipe fixnum) -(chicken.posix#errno/range fixnum) -(chicken.posix#errno/rofs fixnum) -(chicken.posix#errno/spipe fixnum) -(chicken.posix#errno/srch fixnum) -(chicken.posix#errno/wouldblock fixnum) -(chicken.posix#errno/xdev fixnum) (chicken.posix#fcntl/dupfd fixnum) (chicken.posix#fcntl/getfd fixnum) (chicken.posix#fcntl/getfl fixnum)Trap