~ chicken-core (chicken-5) 8ebea4a70de449b883f9f973e8d41772eb7bc340
commit 8ebea4a70de449b883f9f973e8d41772eb7bc340
Author: Evan Hanson <evhan@foldling.org>
AuthorDate: Wed Feb 11 09:06:06 2015 +1300
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Sun Jul 19 21:12:54 2015 +1200
Convert the posix unit into a module
diff --git a/README b/README
index f58d5366..84d4e9fc 100644
--- a/README
+++ b/README
@@ -288,6 +288,7 @@
| | |-- chicken.files.import.so
| | |-- chicken.lolevel.import.so
| | |-- chicken.ports.import.so
+ | | |-- chicken.posix.import.so
| | |-- chicken.tcp.import.so
| | |-- chicken.utils.import.so
| | |-- csi.import.so
@@ -295,7 +296,6 @@
| | |-- foreign.import.so
| | |-- irregex.import.so
| | |-- modules.db
- | | |-- posix.import.so
| | |-- setup-api.import.so
| | |-- setup-api.so
| | |-- setup-download.import.so
diff --git a/chicken-bug.scm b/chicken-bug.scm
index 926932c0..c0be407c 100644
--- a/chicken-bug.scm
+++ b/chicken-bug.scm
@@ -26,8 +26,9 @@
(require-library posix tcp data-structures utils extras)
-(import posix extras
+(import extras
chicken.data-structures
+ chicken.posix
chicken.tcp
chicken.utils)
diff --git a/chicken-install.scm b/chicken-install.scm
index 5e8e2188..3c3170fd 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -29,13 +29,14 @@
(module main ()
- (import scheme chicken posix irregex extras)
+ (import scheme chicken irregex extras)
(import setup-download setup-api)
(import foreign)
(import chicken.data-structures
chicken.files
chicken.ports
+ chicken.posix
chicken.utils)
(include "mini-srfi-1.scm")
@@ -49,11 +50,11 @@
"chicken.files.import.so"
"chicken.lolevel.import.so"
"chicken.ports.import.so"
+ "chicken.posix.import.so"
"chicken.tcp.import.so"
"chicken.utils.import.so"
"srfi-1.import.so"
"srfi-4.import.so"
- "posix.import.so"
"extras.import.so"
"foreign.import.so"
"csi.import.so"
diff --git a/chicken-profile.scm b/chicken-profile.scm
index 5e340de7..61ec0050 100644
--- a/chicken-profile.scm
+++ b/chicken-profile.scm
@@ -30,7 +30,8 @@
(uses data-structures
posix))
-(import chicken.data-structures)
+(import chicken.data-structures
+ chicken.posix)
(include "mini-srfi-1.scm")
diff --git a/chicken-status.scm b/chicken-status.scm
index 7d7a8255..a780841a 100644
--- a/chicken-status.scm
+++ b/chicken-status.scm
@@ -30,10 +30,11 @@
(module main ()
(import scheme chicken foreign)
- (import posix irregex setup-api extras)
+ (import irregex setup-api extras)
(import chicken.data-structures
chicken.files
- chicken.ports)
+ chicken.ports
+ chicken.posix)
(include "mini-srfi-1.scm")
diff --git a/chicken-uninstall.scm b/chicken-uninstall.scm
index 39c8ea71..e4e90212 100644
--- a/chicken-uninstall.scm
+++ b/chicken-uninstall.scm
@@ -33,10 +33,11 @@
(import scheme chicken foreign)
(import setup-api)
- (import posix irregex)
+ (import irregex)
(import chicken.data-structures
chicken.files
chicken.ports
+ chicken.posix
chicken.utils)
(include "mini-srfi-1.scm")
diff --git a/defaults.make b/defaults.make
index 5655bf10..07eca241 100644
--- a/defaults.make
+++ b/defaults.make
@@ -268,8 +268,9 @@ CHICKEN_PROGRAM_OPTIONS += $(if $(PROFILE_OBJECTS),-profile)
# import libraries
PRIMITIVE_IMPORT_LIBRARIES = chicken srfi-4
-PRIMITIVE_IMPORT_LIBRARIES += posix extras foreign csi irregex
+PRIMITIVE_IMPORT_LIBRARIES += extras foreign csi irregex
PRIMITIVE_IMPORT_LIBRARIES += setup-api setup-download
+POSIX_IMPORT_LIBRARY = posix
DYNAMIC_IMPORT_LIBRARIES = data-structures files lolevel ports tcp utils
# targets
@@ -282,7 +283,7 @@ CHICKEN_INSTALL_PROGRAM = $(PROGRAM_PREFIX)chicken-install$(PROGRAM_SUFFIX)
CHICKEN_UNINSTALL_PROGRAM = $(PROGRAM_PREFIX)chicken-uninstall$(PROGRAM_SUFFIX)
CHICKEN_STATUS_PROGRAM = $(PROGRAM_PREFIX)chicken-status$(PROGRAM_SUFFIX)
CHICKEN_BUG_PROGRAM = $(PROGRAM_PREFIX)chicken-bug$(PROGRAM_SUFFIX)
-IMPORT_LIBRARIES = $(PRIMITIVE_IMPORT_LIBRARIES) \
+IMPORT_LIBRARIES = $(PRIMITIVE_IMPORT_LIBRARIES) chicken.$(POSIX_IMPORT_LIBRARY) \
$(foreach lib,$(DYNAMIC_IMPORT_LIBRARIES),chicken.$(lib))
ifdef STATICBUILD
diff --git a/distribution/manifest b/distribution/manifest
index 7525f68c..8edaf0bd 100644
--- a/distribution/manifest
+++ b/distribution/manifest
@@ -246,6 +246,8 @@ chicken.lolevel.import.scm
chicken.lolevel.import.c
chicken.ports.import.scm
chicken.ports.import.c
+chicken.posix.import.scm
+chicken.posix.import.c
chicken.tcp.import.scm
chicken.tcp.import.c
chicken.utils.import.scm
@@ -253,11 +255,9 @@ chicken.utils.import.c
foreign.import.scm
foreign.import.c
srfi-4.import.scm
-posix.import.scm
extras.import.scm
irregex.import.scm
srfi-4.import.c
-posix.import.c
extras.import.c
irregex.import.c
csi.import.scm
diff --git a/modules.scm b/modules.scm
index f0159c22..d6649322 100644
--- a/modules.scm
+++ b/modules.scm
@@ -917,6 +917,7 @@
(##sys#register-module-alias 'files 'chicken.files)
(##sys#register-module-alias 'lolevel 'chicken.lolevel)
(##sys#register-module-alias 'ports 'chicken.ports)
+(##sys#register-module-alias 'posix 'chicken.posix)
(##sys#register-module-alias 'tcp 'chicken.tcp)
(##sys#register-module-alias 'utils 'chicken.utils)
diff --git a/posix-common.scm b/posix-common.scm
index b0280ba0..70772baa 100644
--- a/posix-common.scm
+++ b/posix-common.scm
@@ -25,7 +25,6 @@
(declare
- (hide ##sys#stat posix-error check-time-vector ##sys#find-files)
(foreign-declare #<<EOF
#include <signal.h>
@@ -352,6 +351,9 @@ EOF
(define fileno/stdout _stdout_fileno)
(define fileno/stderr _stderr_fileno)
+(define open-input-file*)
+(define open-output-file*)
+
(let ()
(define (mode inp m loc)
(##sys#make-c-string
diff --git a/posix.import.scm b/posix.import.scm
deleted file mode 100644
index 8e06dfe7..00000000
--- a/posix.import.scm
+++ /dev/null
@@ -1,248 +0,0 @@
-;;;; posix.import.scm - import library for "posix" module
-;
-; Copyright (c) 2008-2015, The CHICKEN Team
-; All rights reserved.
-;
-; Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
-; conditions are met:
-;
-; Redistributions of source code must retain the above copyright notice, this list of conditions and the following
-; disclaimer.
-; Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
-; disclaimer in the documentation and/or other materials provided with the distribution.
-; Neither the name of the author nor the names of its contributors may be used to endorse or promote
-; products derived from this software without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
-; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-; AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
-; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-
-
-(##sys#register-primitive-module
- 'posix
- '(_exit
- call-with-input-pipe
- call-with-output-pipe
- change-directory
- change-directory*
- change-file-mode
- change-file-owner
- close-input-pipe
- close-output-pipe
- create-directory
- create-fifo
- create-pipe
- create-session
- create-symbolic-link
- current-directory
- 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
- 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
- file-position
- set-file-position!
- file-read
- file-read-access?
- file-select
- file-size
- file-stat
- file-test-lock
- file-truncate
- file-type
- file-unlock
- file-write
- file-write-access?
- fileno/stderr
- fileno/stdin
- fileno/stdout
- find-files
- get-groups
- get-host-name
- glob
- group-information
- initialize-groups
- local-time->seconds
- local-timezone-abbreviation
- open-input-file*
- open-input-pipe
- open-output-file*
- open-output-pipe
- open/append
- open/binary
- open/creat
- open/excl
- open/fsync
- open/noctty
- open/nonblock
- open/rdonly
- open/rdwr
- open/read
- open/sync
- open/text
- open/trunc
- open/write
- open/wronly
- parent-process-id
- perm/irgrp
- perm/iroth
- perm/irusr
- perm/irwxg
- perm/irwxo
- perm/irwxu
- perm/isgid
- perm/isuid
- perm/isvtx
- perm/iwgrp
- perm/iwoth
- perm/iwusr
- perm/ixgrp
- perm/ixoth
- perm/ixusr
- pipe/buf
- port->fileno
- process
- process*
- process-execute
- process-fork
- process-group-id
- process-run
- process-signal
- process-wait
- read-symbolic-link
- regular-file?
- seconds->local-time
- seconds->string
- seconds->utc-time
- seek/cur
- seek/end
- seek/set
- set-alarm!
- set-buffering-mode!
- set-groups!
- set-root-directory!
- set-signal-handler!
- set-signal-mask!
- setenv
- signal-handler
- signal-mask
- signal-mask!
- signal-masked?
- signal-unmask!
- signal/abrt
- signal/alrm
- signal/break
- signal/chld
- signal/cont
- signal/fpe
- signal/bus
- signal/hup
- signal/ill
- signal/int
- signal/io
- signal/kill
- signal/pipe
- signal/prof
- signal/quit
- signal/segv
- signal/stop
- signal/term
- signal/trap
- signal/tstp
- signal/urg
- signal/usr1
- signal/usr2
- signal/vtalrm
- signal/winch
- signal/xcpu
- signal/xfsz
- signals-list
- sleep
- block-device?
- character-device?
- fifo?
- socket?
- string->time
- symbolic-link?
- system-information
- terminal-name
- terminal-port?
- terminal-size
- time->string
- unsetenv
- user-information
- utc-time->seconds
- with-input-from-pipe
- with-output-to-pipe))
diff --git a/posixunix.scm b/posixunix.scm
index 1220a01d..faec6fad 100644
--- a/posixunix.scm
+++ b/posixunix.scm
@@ -29,18 +29,64 @@
(unit posix)
(uses scheduler irregex extras files ports)
(disable-interrupts)
- (hide group-member _get-groups _ensure-groups posix-error ##sys#terminal-check)
(not inline ##sys#interrupt-hook ##sys#user-interrupt-hook))
-
;; these are not available on Windows
(define-foreign-variable _stat_st_blksize unsigned-int "C_statbuf.st_blksize")
(define-foreign-variable _stat_st_blocks unsigned-int "C_statbuf.st_blocks")
-
-;;; common code
-
+(module chicken.posix
+ (_exit call-with-input-pipe call-with-output-pipe change-directory
+ change-directory* change-file-mode change-file-owner close-input-pipe
+ close-output-pipe create-directory create-fifo create-pipe
+ create-session create-symbolic-link current-directory
+ 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
+ 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
+ file-position set-file-position! file-read file-read-access?
+ file-select file-size file-stat file-test-lock file-truncate
+ file-type file-unlock file-write file-write-access? fileno/stderr
+ fileno/stdin fileno/stdout find-files get-groups get-host-name glob
+ group-information initialize-groups local-time->seconds
+ local-timezone-abbreviation open-input-file* open-input-pipe
+ open-output-file* open-output-pipe open/append open/binary open/creat
+ open/excl open/fsync open/noctty open/nonblock open/rdonly open/rdwr
+ open/read open/sync open/text open/trunc open/write open/wronly
+ parent-process-id perm/irgrp perm/iroth perm/irusr perm/irwxg
+ perm/irwxo perm/irwxu perm/isgid perm/isuid perm/isvtx perm/iwgrp
+ perm/iwoth perm/iwusr perm/ixgrp perm/ixoth perm/ixusr pipe/buf
+ port->fileno process process* process-execute process-fork
+ process-group-id process-run process-signal process-wait
+ read-symbolic-link regular-file? seconds->local-time seconds->string
+ seconds->utc-time seek/cur seek/end seek/set set-alarm!
+ set-buffering-mode! set-groups! set-root-directory!
+ set-signal-handler! set-signal-mask! setenv signal-handler
+ signal-mask signal-mask! signal-masked? signal-unmask! signal/abrt
+ signal/alrm signal/break signal/chld signal/cont signal/fpe
+ signal/bus signal/hup signal/ill signal/int signal/io signal/kill
+ signal/pipe signal/prof signal/quit signal/segv signal/stop
+ signal/term signal/trap signal/tstp signal/urg signal/usr1
+ signal/usr2 signal/vtalrm signal/winch signal/xcpu signal/xfsz
+ signals-list sleep block-device? character-device? fifo? socket?
+ string->time symbolic-link? system-information terminal-name
+ terminal-port? terminal-size time->string unsetenv user-information
+ utc-time->seconds with-input-from-pipe with-output-to-pipe)
+
+(import scheme chicken foreign irregex)
(import chicken.files
chicken.ports)
@@ -630,6 +676,11 @@ EOF
;;; Pipes:
+(define open-input-pipe)
+(define open-output-pipe)
+(define close-input-pipe)
+(define close-output-pipe)
+
(let ()
(define (mode arg) (if (pair? arg) (##sys#slot arg 0) '###text))
(define (badmode m) (##sys#error "illegal input/output mode specifier" m))
@@ -1057,6 +1108,10 @@ EOF
(define-foreign-variable _w_ok int "W_OK")
(define-foreign-variable _x_ok int "X_OK")
+(define file-read-access?)
+(define file-write-access?)
+(define file-execute-access?)
+
(let ()
(define (check filename acc loc)
(##sys#check-string filename loc)
@@ -1349,6 +1404,10 @@ EOF
(define-foreign-variable _f_rdlck int "F_RDLCK")
(define-foreign-variable _f_unlck int "F_UNLCK")
+(define file-lock)
+(define file-lock/blocking)
+(define file-test-lock)
+
(let ()
(define (setup port args loc)
(let-optionals* args ([start 0]
@@ -1753,3 +1812,5 @@ EOF
(##sys#check-string dir 'set-root-directory!)
(when (fx< (chroot dir) 0)
(posix-error #:file-error 'set-root-directory! "unable to change root directory" dir) ) ) ) )
+
+)
diff --git a/posixwin.scm b/posixwin.scm
index 215a095b..27abd49b 100644
--- a/posixwin.scm
+++ b/posixwin.scm
@@ -63,7 +63,7 @@
(declare
(unit posix)
- (uses scheduler irregex extras files ports)
+ (uses data-structures scheduler irregex extras files ports)
(disable-interrupts)
(hide $quote-args-list $exec-setup $exec-teardown)
(not inline ##sys#interrupt-hook ##sys#user-interrupt-hook)
@@ -658,10 +658,63 @@ static int set_file_mtime(char *filename, C_word tm)
EOF
) )
-
-;;; common code
-
-(import chicken.files
+(define-foreign-variable _stat_st_blksize scheme-object "C_SCHEME_UNDEFINED")
+(define-foreign-variable _stat_st_blocks scheme-object "C_SCHEME_UNDEFINED")
+
+(module chicken.posix
+ (_exit call-with-input-pipe call-with-output-pipe change-directory
+ change-directory* change-file-mode change-file-owner close-input-pipe
+ close-output-pipe create-directory create-fifo create-pipe
+ create-session create-symbolic-link current-directory
+ 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
+ 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
+ file-position set-file-position! file-read file-read-access?
+ file-select file-size file-stat file-test-lock file-truncate
+ file-type file-unlock file-write file-write-access? fileno/stderr
+ fileno/stdin fileno/stdout find-files get-groups get-host-name glob
+ group-information initialize-groups local-time->seconds
+ local-timezone-abbreviation open-input-file* open-input-pipe
+ open-output-file* open-output-pipe open/append open/binary open/creat
+ open/excl open/fsync open/noctty open/nonblock open/rdonly open/rdwr
+ open/read open/sync open/text open/trunc open/write open/wronly
+ parent-process-id perm/irgrp perm/iroth perm/irusr perm/irwxg
+ perm/irwxo perm/irwxu perm/isgid perm/isuid perm/isvtx perm/iwgrp
+ perm/iwoth perm/iwusr perm/ixgrp perm/ixoth perm/ixusr pipe/buf
+ port->fileno process process* process-execute process-fork
+ process-group-id process-run process-signal process-wait
+ read-symbolic-link regular-file? seconds->local-time seconds->string
+ seconds->utc-time seek/cur seek/end seek/set set-alarm!
+ set-buffering-mode! set-groups! set-root-directory!
+ set-signal-handler! set-signal-mask! setenv signal-handler
+ signal-mask signal-mask! signal-masked? signal-unmask! signal/abrt
+ signal/alrm signal/break signal/chld signal/cont signal/fpe
+ #;signal/bus signal/hup signal/ill signal/int signal/io signal/kill
+ signal/pipe signal/prof signal/quit signal/segv signal/stop
+ signal/term signal/trap signal/tstp signal/urg signal/usr1
+ signal/usr2 signal/vtalrm signal/winch signal/xcpu signal/xfsz
+ signals-list sleep block-device? character-device? fifo? socket?
+ string->time symbolic-link? system-information terminal-name
+ terminal-port? terminal-size time->string unsetenv user-information
+ utc-time->seconds with-input-from-pipe with-output-to-pipe)
+
+(import scheme chicken foreign irregex)
+(import chicken.data-structures
+ chicken.extras
+ chicken.files
chicken.ports)
(include "posix-common.scm")
@@ -819,6 +872,11 @@ EOF
;;; Pipes:
+(define open-input-pipe)
+(define open-output-pipe)
+(define close-input-pipe)
+(define close-output-pipe)
+
(let ()
(define (mode arg) (if (pair? arg) (##sys#slot arg 0) '###text))
(define (badmode m) (##sys#error "illegal input/output mode specifier" m))
@@ -1017,6 +1075,10 @@ EOF
(define-foreign-variable _w_ok int "4")
(define-foreign-variable _x_ok int "2")
+(define file-read-access?)
+(define file-write-access?)
+(define file-execute-access?)
+
(let ()
(define (check filename acc loc)
(##sys#check-string filename loc)
@@ -1419,3 +1481,5 @@ EOF
(define perm/isgid 0)
(define perm/isuid 0)
(define perm/isvtx 0)
+
+)
diff --git a/rules.make b/rules.make
index c3a5a53e..618bc804 100644
--- a/rules.make
+++ b/rules.make
@@ -508,6 +508,10 @@ $(foreach lib, $(DYNAMIC_IMPORT_LIBRARIES),\
$(foreach lib, $(filter-out chicken,$(COMPILER_OBJECTS_1)),\
$(eval $(call declare-emitted-compiler-import-lib-dependency,$(lib))))
+# posix declared manually, as it varies based on POSIXFILE
+.SECONDARY: chicken.posix.import.scm
+chicken.posix.import.scm: $(POSIXFILE).c
+
chicken.c: chicken.scm mini-srfi-1.scm \
chicken.compiler.batch-driver.import.scm \
chicken.compiler.c-platform.import.scm \
@@ -575,11 +579,13 @@ chicken-status.c: chicken-status.scm \
chicken.data-structures.import.scm \
chicken.files.import.scm \
chicken.ports.import.scm \
+ chicken.posix.import.scm \
setup-api.import.scm
chicken-install.c: chicken-install.scm \
chicken.data-structures.import.scm \
chicken.files.import.scm \
chicken.ports.import.scm \
+ chicken.posix.import.scm \
chicken.utils.import.scm \
setup-api.import.scm \
setup-download.import.scm
@@ -587,17 +593,20 @@ chicken-uninstall.c: chicken-uninstall.scm \
chicken.data-structures.import.scm \
chicken.files.import.scm \
chicken.ports.import.scm \
+ chicken.posix.import.scm \
chicken.utils.import.scm \
setup-api.import.scm
setup-api.c: setup-api.scm \
chicken.data-structures.import.scm \
chicken.files.import.scm \
chicken.ports.import.scm \
+ chicken.posix.import.scm \
chicken.utils.import.scm
setup-download.c: setup-download.scm \
chicken.data-structures.import.scm \
chicken.files.import.scm \
chicken.ports.import.scm \
+ chicken.posix.import.scm \
chicken.tcp.import.scm \
chicken.utils.import.scm \
setup-api.import.scm
@@ -615,7 +624,8 @@ tcp.c: tcp.scm \
chicken.ports.import.scm
utils.c: utils.scm \
chicken.data-structures.import.scm \
- chicken.files.import.scm
+ chicken.files.import.scm \
+ chicken.posix.import.scm
define profile-flags
$(if $(filter $(basename $(1)),$(PROFILE_OBJECTS)),-profile)
@@ -634,9 +644,9 @@ modules.c: $(SRCDIR)modules.scm $(SRCDIR)common-declarations.scm $(SRCDIR)mini-s
extras.c: $(SRCDIR)extras.scm $(SRCDIR)common-declarations.scm
$(bootstrap-lib)
posixunix.c: $(SRCDIR)posixunix.scm $(SRCDIR)posix-common.scm $(SRCDIR)common-declarations.scm
- $(bootstrap-lib)
+ $(bootstrap-lib) -emit-import-library chicken.posix
posixwin.c: $(SRCDIR)posixwin.scm $(SRCDIR)posix-common.scm $(SRCDIR)common-declarations.scm
- $(bootstrap-lib)
+ $(bootstrap-lib) -emit-import-library chicken.posix
irregex.c: $(SRCDIR)irregex.scm $(SRCDIR)irregex-core.scm $(SRCDIR)irregex-utils.scm $(SRCDIR)common-declarations.scm
$(bootstrap-lib)
chicken-syntax.c: $(SRCDIR)chicken-syntax.scm $(SRCDIR)common-declarations.scm $(SRCDIR)mini-srfi-1.scm
@@ -720,10 +730,10 @@ dist: distfiles html
# Jim's `manual-labor' must be installed (just run "chicken-install manual-labor")
html:
$(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) $(SRCDIR)manual-html
- manual-labor $(SRCDIR)manual $(SRCDIR)manual-html
- $(COPY_COMMAND) $(SRCDIR)chicken.png manual-html
- $(COPY_COMMAND) $(SRCDIR)manual.css manual-html
- $(COPY_COMMAND) $(SRCDIR)index.html manual-html
+ #manual-labor $(SRCDIR)manual $(SRCDIR)manual-html
+ #$(COPY_COMMAND) $(SRCDIR)chicken.png manual-html
+ #$(COPY_COMMAND) $(SRCDIR)manual.css manual-html
+ #$(COPY_COMMAND) $(SRCDIR)index.html manual-html
# cleaning up
diff --git a/setup-api.scm b/setup-api.scm
index afa2efbc..cb2c3570 100644
--- a/setup-api.scm
+++ b/setup-api.scm
@@ -66,10 +66,11 @@
setup-error-handling)
(import scheme chicken foreign
- irregex posix extras
+ irregex extras
chicken.data-structures
chicken.files
chicken.ports
+ chicken.posix
chicken.utils)
(include "mini-srfi-1.scm")
diff --git a/setup-download.scm b/setup-download.scm
index e143cb0d..33c89bda 100644
--- a/setup-download.scm
+++ b/setup-download.scm
@@ -37,10 +37,11 @@
temporary-directory)
(import scheme chicken foreign)
- (import extras irregex posix
+ (import extras irregex
setup-api
chicken.data-structures
chicken.files
+ chicken.posix
chicken.tcp
chicken.utils)
diff --git a/tests/port-tests.scm b/tests/port-tests.scm
index 588a487a..af1c215e 100644
--- a/tests/port-tests.scm
+++ b/tests/port-tests.scm
@@ -1,4 +1,4 @@
-(require-extension data-structures files ports srfi-4 tcp utils)
+(require-extension data-structures files ports posix srfi-4 tcp utils)
(include "test.scm")
(test-begin)
diff --git a/tests/runtests.sh b/tests/runtests.sh
index eab23d54..b8f712d9 100755
--- a/tests/runtests.sh
+++ b/tests/runtests.sh
@@ -39,7 +39,7 @@ for x in setup-api.so setup-api.import.so setup-download.so \
setup-download.import.so chicken.import.so chicken.lolevel.import.so \
srfi-4.import.so chicken.data-structures.import.so \
chicken.ports.import.so chicken.utils.import.so chicken.files.import.so \
- posix.import.so \
+ chicken.posix.import.so \
extras.import.so \
irregex.import.so chicken.tcp.import.so \
foreign.import.so \
diff --git a/types.db b/types.db
index fbd829cf..3c6b7b6c 100644
--- a/types.db
+++ b/types.db
@@ -1812,232 +1812,232 @@
;; posix
-(_exit (procedure _exit (#!optional fixnum) noreturn))
-(call-with-input-pipe (#(procedure #:enforce) call-with-input-pipe (string (procedure (input-port) . *) #!optional symbol) . *))
-(call-with-output-pipe (#(procedure #:enforce) call-with-output-pipe (string (procedure (input-port) . *) #!optional symbol) . *))
-(change-directory (#(procedure #:clean #:enforce) change-directory (string) string))
-(change-directory* (#(procedure #:clean #:enforce) change-directory* (fixnum) fixnum))
-(change-file-mode (#(procedure #:clean #:enforce) change-file-mode (string fixnum) undefined))
-(change-file-owner (#(procedure #:clean #:enforce) change-file-owner (string fixnum fixnum) undefined))
-(close-input-pipe (#(procedure #:clean #:enforce) close-input-pipe (input-port) fixnum))
-(close-output-pipe (#(procedure #:clean #:enforce) close-output-pipe (output-port) fixnum))
-(create-directory (#(procedure #:clean #:enforce) create-directory (string #!optional *) string))
-(create-fifo (#(procedure #:clean #:enforce) create-fifo (string #!optional fixnum) undefined))
-(create-pipe (procedure create-pipe () fixnum fixnum))
-(create-session (#(procedure #:clean) create-session () fixnum))
-(create-symbolic-link (#(procedure #:clean #:enforce) create-symbolic-link (string string) undefined))
+(chicken.posix#_exit (procedure chicken.posix#_exit (#!optional fixnum) noreturn))
+(chicken.posix#call-with-input-pipe (#(procedure #:enforce) chicken.posix#call-with-input-pipe (string (procedure (input-port) . *) #!optional symbol) . *))
+(chicken.posix#call-with-output-pipe (#(procedure #:enforce) chicken.posix#call-with-output-pipe (string (procedure (input-port) . *) #!optional symbol) . *))
+(chicken.posix#change-directory (#(procedure #:clean #:enforce) chicken.posix#change-directory (string) string))
+(chicken.posix#change-directory* (#(procedure #:clean #:enforce) chicken.posix#change-directory* (fixnum) fixnum))
+(chicken.posix#change-file-mode (#(procedure #:clean #:enforce) chicken.posix#change-file-mode (string fixnum) undefined))
+(chicken.posix#change-file-owner (#(procedure #:clean #:enforce) chicken.posix#change-file-owner (string fixnum fixnum) undefined))
+(chicken.posix#close-input-pipe (#(procedure #:clean #:enforce) chicken.posix#close-input-pipe (input-port) fixnum))
+(chicken.posix#close-output-pipe (#(procedure #:clean #:enforce) chicken.posix#close-output-pipe (output-port) fixnum))
+(chicken.posix#create-directory (#(procedure #:clean #:enforce) chicken.posix#create-directory (string #!optional *) string))
+(chicken.posix#create-fifo (#(procedure #:clean #:enforce) chicken.posix#create-fifo (string #!optional fixnum) undefined))
+(chicken.posix#create-pipe (procedure chicken.posix#create-pipe () fixnum fixnum))
+(chicken.posix#create-session (#(procedure #:clean) chicken.posix#create-session () fixnum))
+(chicken.posix#create-symbolic-link (#(procedure #:clean #:enforce) chicken.posix#create-symbolic-link (string string) undefined))
;; extra arg for "parameterize" - ugh, what a hack...
-(current-directory (#(procedure #:clean #:enforce) current-directory (#!optional string *) string))
-
-(current-effective-group-id (#(procedure #:clean) current-effective-group-id () fixnum))
-(current-effective-user-id (#(procedure #:clean) current-effective-user-id () fixnum))
-(current-effective-user-name (#(procedure #:clean) current-effective-user-name () string))
-(get-environment-variables (#(procedure #:clean) get-environment-variables () (list-of string)))
-(current-group-id (#(procedure #:clean) current-group-id () fixnum))
-(current-process-id (#(procedure #:clean) current-process-id () fixnum))
-(current-user-id (#(procedure #:clean) current-user-id () fixnum))
-(current-user-name (#(procedure #:clean) current-user-name () string))
-(delete-directory (#(procedure #:clean #:enforce) delete-directory (string #!optional *) string))
-(directory (#(procedure #:clean #:enforce) directory (#!optional string *) (list-of string)))
-(directory? (#(procedure #:clean #:enforce) directory? ((or string fixnum)) boolean))
-(duplicate-fileno (#(procedure #:clean #:enforce) duplicate-fileno (fixnum #!optional fixnum) fixnum))
-(errno/2big fixnum)
-(errno/acces fixnum)
-(errno/again fixnum)
-(errno/badf fixnum)
-(errno/busy fixnum)
-(errno/child fixnum)
-(errno/deadlk fixnum)
-(errno/dom fixnum)
-(errno/exist fixnum)
-(errno/fault fixnum)
-(errno/fbig fixnum)
-(errno/ilseq fixnum)
-(errno/intr fixnum)
-(errno/inval fixnum)
-(errno/io fixnum)
-(errno/isdir fixnum)
-(errno/mfile fixnum)
-(errno/mlink fixnum)
-(errno/nametoolong fixnum)
-(errno/nfile fixnum)
-(errno/nodev fixnum)
-(errno/noent fixnum)
-(errno/noexec fixnum)
-(errno/nolck fixnum)
-(errno/nomem fixnum)
-(errno/nospc fixnum)
-(errno/nosys fixnum)
-(errno/notdir fixnum)
-(errno/notempty fixnum)
-(errno/notty fixnum)
-(errno/nxio fixnum)
-(errno/perm fixnum)
-(errno/pipe fixnum)
-(errno/range fixnum)
-(errno/rofs fixnum)
-(errno/spipe fixnum)
-(errno/srch fixnum)
-(errno/wouldblock fixnum)
-(errno/xdev fixnum)
-(fcntl/dupfd fixnum)
-(fcntl/getfd fixnum)
-(fcntl/getfl fixnum)
-(fcntl/setfd fixnum)
-(fcntl/setfl fixnum)
-(file-access-time (#(procedure #:clean #:enforce) file-access-time ((or string fixnum)) integer))
-(file-change-time (#(procedure #:clean #:enforce) file-change-time ((or string fixnum)) integer))
-(file-close (#(procedure #:clean #:enforce) file-close (fixnum) undefined))
-(file-control (#(procedure #:clean #:enforce) file-control (fixnum fixnum #!optional fixnum) fixnum))
-(file-creation-mode (#(procedure #:clean #:enforce) file-creation-mode (#!optional fixnum) fixnum))
-(file-execute-access? (#(procedure #:clean #:enforce) file-execute-access? (string) boolean))
-(file-link (#(procedure #:clean #:enforce) file-link (string string) undefined))
-(file-lock (#(procedure #:clean #:enforce) file-lock (port #!optional fixnum integer) (struct lock)))
-(file-lock/blocking (#(procedure #:clean #:enforce) file-lock/blocking (port #!optional fixnum integer) (struct lock)))
-(file-mkstemp (#(procedure #:clean #:enforce) file-mkstemp (string) fixnum string))
-(file-modification-time (#(procedure #:clean #:enforce) file-modification-time ((or string fixnum)) integer))
-(file-open (#(procedure #:clean #:enforce) file-open (string fixnum #!optional fixnum) fixnum))
-(file-owner (#(procedure #:clean #:enforce) file-owner ((or string fixnum)) fixnum))
-(file-permissions (#(procedure #:clean #:enforce) file-permissions ((or string fixnum)) fixnum))
-(file-position (#(procedure #:clean #:enforce) file-position ((or port fixnum)) integer))
-(file-read (#(procedure #:clean #:enforce) file-read (fixnum fixnum #!optional *) list))
-(file-read-access? (#(procedure #:clean #:enforce) file-read-access? (string) boolean))
-(file-select (#(procedure #:clean #:enforce) file-select ((or (list-of fixnum) fixnum false) (or (list-of fixnum) fixnum false) #!optional fixnum) * *))
-(file-size (#(procedure #:clean #:enforce) file-size ((or string fixnum)) integer))
-(file-stat (#(procedure #:clean #:enforce) file-stat ((or string fixnum) #!optional *) (vector-of integer)))
-(file-test-lock (#(procedure #:clean #:enforce) file-test-lock (port #!optional fixnum *) boolean))
-(file-truncate (#(procedure #:clean #:enforce) file-truncate ((or string fixnum) integer) undefined))
-(file-type (#(procedure #:clean #:enforce) ((or string fixnum) #!optional * *) symbol))
-(file-unlock (#(procedure #:clean #:enforce) file-unlock ((struct lock)) undefined))
-(file-write (#(procedure #:clean #:enforce) file-write (fixnum * #!optional fixnum) fixnum))
-(file-write-access? (#(procedure #:clean #:enforce) file-write-access? (string) boolean))
-(fileno/stderr fixnum)
-(fileno/stdin fixnum)
-(fileno/stdout fixnum)
-(find-files (#(procedure #:enforce) find-files (string #!rest) list))
-(get-groups (#(procedure #:clean) get-groups () list))
-(get-host-name (#(procedure #:clean) get-host-name () string))
-(glob (#(procedure #:clean #:enforce) glob (#!rest string) list))
-(group-information (#(procedure #:clean #:enforce) group-information (fixnum #!optional *) *))
-(initialize-groups (#(procedure #:clean #:enforce) initialize-groups (string fixnum) undefined))
-(local-time->seconds (#(procedure #:clean #:enforce) local-time->seconds ((vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)) integer))
-(local-timezone-abbreviation (#(procedure #:clean) local-timezone-abbreviation () string))
-(open-input-file* (#(procedure #:clean #:enforce) open-input-file* (fixnum #!optional symbol) input-port))
-(open-input-pipe (#(procedure #:clean #:enforce) open-input-pipe (string #!optional symbol) input-port))
-(open-output-file* (#(procedure #:clean #:enforce) open-output-file* (fixnum #!optional symbol) output-port))
-(open-output-pipe (#(procedure #:clean #:enforce) open-output-pipe (string #!optional symbol) output-port))
-(open/append fixnum)
-(open/binary fixnum)
-(open/creat fixnum)
-(open/excl fixnum)
-(open/fsync fixnum)
-(open/noctty fixnum)
-(open/nonblock fixnum)
-(open/rdonly fixnum)
-(open/rdwr fixnum)
-(open/read fixnum)
-(open/sync fixnum)
-(open/text fixnum)
-(open/trunc fixnum)
-(open/write fixnum)
-(open/wronly fixnum)
-(parent-process-id (#(procedure #:clean) parent-process-id () fixnum))
-(perm/irgrp fixnum)
-(perm/iroth fixnum)
-(perm/irusr fixnum)
-(perm/irwxg fixnum)
-(perm/irwxo fixnum)
-(perm/irwxu fixnum)
-(perm/isgid fixnum)
-(perm/isuid fixnum)
-(perm/isvtx fixnum)
-(perm/iwgrp fixnum)
-(perm/iwoth fixnum)
-(perm/iwusr fixnum)
-(perm/ixgrp fixnum)
-(perm/ixoth fixnum)
-(perm/ixusr fixnum)
-(pipe/buf fixnum)
-(port->fileno (#(procedure #:clean #:enforce) port->fileno (port) fixnum))
-(process (#(procedure #:clean #:enforce) process (string #!optional (list-of string) (list-of string)) input-port output-port fixnum))
-(process* (#(procedure #:clean #:enforce) process* (string #!optional (list-of string) (list-of string)) input-port output-port fixnum *))
-
-(process-execute
- (#(procedure #:clean #:enforce) process-execute (string #!optional (list-of string) (list-of string)) noreturn))
-
-(process-fork (#(procedure #:enforce) process-fork (#!optional (or (procedure () . *) false) *) fixnum))
-
-(process-group-id (#(procedure #:clean #:enforce) process-group-id () fixnum))
-(process-run (#(procedure #:clean #:enforce) process-run (string #!optional (list-of string)) fixnum))
-(process-signal (#(procedure #:clean #:enforce) process-signal (fixnum #!optional fixnum) undefined))
-(process-wait (#(procedure #:clean #:enforce) process-wait (#!optional fixnum *) fixnum fixnum fixnum))
-(read-symbolic-link (#(procedure #:clean #:enforce) read-symbolic-link (string #!optional boolean) string))
-(regular-file? (#(procedure #:clean #:enforce) regular-file? ((or string fixnum)) boolean))
-(seconds->local-time (#(procedure #:clean #:enforce) seconds->local-time (#!optional integer) (vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)))
-(seconds->string (#(procedure #:clean #:enforce) seconds->string (#!optional integer) string))
-(seconds->utc-time (#(procedure #:clean #:enforce) seconds->utc-time (#!optional integer) (vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)))
-(seek/cur fixnum)
-(seek/end fixnum)
-(seek/set fixnum)
-(set-alarm! (#(procedure #:clean #:enforce) set-alarm! (integer) integer))
-(set-buffering-mode! (#(procedure #:clean #:enforce) set-buffering-mode! (port symbol #!optional fixnum) undefined))
-(set-file-position! (#(procedure #:clean #:enforce) set-file-position! ((or port fixnum) integer #!optional fixnum) undefined))
-(set-groups! (#(procedure #:clean #:enforce) set-groups! ((list-of fixnum)) undefined))
-(set-root-directory! (#(procedure #:clean #:enforce) set-root-directory! (string) undefined))
-(set-signal-handler! (#(procedure #:clean #:enforce) set-signal-handler! (fixnum (or false (procedure (fixnum) . *))) undefined))
-(set-signal-mask! (#(procedure #:clean #:enforce) set-signal-mask! ((list-of fixnum)) undefined))
-(setenv (#(procedure #:clean #:enforce) setenv (string string) undefined))
-(signal-handler (#(procedure #:clean #:enforce) signal-handler (fixnum) (or false (procedure (fixnum) . *))))
-(signal-mask (#(procedure #:clean) signal-mask () fixnum))
-(signal-mask! (#(procedure #:clean #:enforce) signal-mask! (fixnum) undefined))
-(signal-masked? (#(procedure #:clean #:enforce) signal-masked? (fixnum) boolean))
-(signal-unmask! (#(procedure #:clean #:enforce) signal-unmask! (fixnum) undefined))
-(signal/abrt fixnum)
-(signal/alrm fixnum)
-(signal/chld fixnum)
-(signal/cont fixnum)
-(signal/fpe fixnum)
-(signal/hup fixnum)
-(signal/ill fixnum)
-(signal/int fixnum)
-(signal/io fixnum)
-(signal/bus fixnum)
-(signal/kill fixnum)
-(signal/pipe fixnum)
-(signal/prof fixnum)
-(signal/quit fixnum)
-(signal/segv fixnum)
-(signal/stop fixnum)
-(signal/term fixnum)
-(signal/trap fixnum)
-(signal/tstp fixnum)
-(signal/urg fixnum)
-(signal/usr1 fixnum)
-(signal/usr2 fixnum)
-(signal/vtalrm fixnum)
-(signal/winch fixnum)
-(signal/xcpu fixnum)
-(signal/xfsz fixnum)
-(signals-list list)
-(sleep (#(procedure #:clean #:enforce) sleep (fixnum) fixnum))
-(block-device? (#(procedure #:clean #:enforce) block-device? ((or string fixnum)) boolean))
-(character-device? (#(procedure #:clean #:enforce) character-device? ((or string fixnum)) boolean))
-(fifo? (#(procedure #:clean #:enforce) fifo? ((or string fixnum)) boolean))
-(socket? (#(procedure #:clean #:enforce) socket? ((or string fixnum)) boolean))
-(string->time (#(procedure #:clean #:enforce) string->time (string #!optional string) (vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)))
-(symbolic-link? (#(procedure #:clean #:enforce) symbolic-link? ((or string fixnum)) boolean))
-(system-information (#(procedure #:clean) system-information () list))
-(terminal-name (#(procedure #:clean #:enforce) terminal-name (port) string))
-(terminal-port? (#(procedure #:clean #:enforce) terminal-port? (port) boolean))
-(terminal-size (#(procedure #:clean #:enforce) terminal-size (port) fixnum fixnum))
-(time->string (#(procedure #:clean #:enforce) time->string ((vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum) #!optional string) string))
-(unmap-file-from-memory (#(procedure #:clean #:enforce) unmap-file-from-memory ((struct mmap) #!optional fixnum) undefined))
-(unsetenv (#(procedure #:clean #:enforce) unsetenv (string) undefined))
-(user-information (#(procedure #:clean #:enforce) user-information ((or string fixnum) #!optional *) *))
-(utc-time->seconds (#(procedure #:clean #:enforce) utc-time->seconds ((vector fixnum fixnum fixnum fixnum fixnum fixnum fixnum fixnum boolean fixnum)) integer))
-(with-input-from-pipe (#(procedure #:enforce) with-input-from-pipe (string (procedure () . *) #!optional symbol) . *))
-(with-output-to-pipe (#(procedure #:enforce) with-output-to-pipe (string (procedure () . *) #!optional symbol) . *))
+(chicken.posix#current-directory (#(procedure #:clean #:enforce) chicken.posix#current-directory (#!optional string *) string))
+
+(chicken.posix#current-effective-group-id (#(procedure #:clean) chicken.posix#current-effective-group-id () fixnum))
+(chicken.posix#current-effective-user-id (#(procedure #:clean) chicken.posix#current-effective-user-id () fixnum))
+(chicken.posix#current-effective-user-name (#(procedure #:clean) chicken.posix#current-effective-user-name () string))
+(chicken.posix#get-environment-variables (#(procedure #:clean) chicken.posix#get-environment-variables () (list-of string)))
+(chicken.posix#current-group-id (#(procedure #:clean) chicken.posix#current-group-id () fixnum))
+(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#delete-directory (#(procedure #:clean #:enforce) chicken.posix#delete-directory (string #!optional *) string))
+(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)
+(chicken.posix#fcntl/setfd fixnum)
+(chicken.posix#fcntl/setfl fixnum)
+(chicken.posix#file-access-time (#(procedure #:clean #:enforce) chicken.posix#file-access-time ((or string fixnum)) integer))
+(chicken.posix#file-change-time (#(procedure #:clean #:enforce) chicken.posix#file-change-time ((or string fixnum)) integer))
+(chicken.posix#file-close (#(procedure #:clean #:enforce) chicken.posix#file-close (fixnum) undefined))
+(chicken.posix#file-control (#(procedure #:clean #:enforce) chicken.posix#file-control (fixnum fixnum #!optional fixnum) fixnum))
+(chicken.posix#file-creation-mode (#(procedure #:clean #:enforce) chicken.posix#file-creation-mode (#!optional fixnum) fixnum))
+(chicken.posix#file-execute-access? (#(procedure #:clean #:enforce) chicken.posix#file-execute-access? (string) boolean))
+(chicken.posix#file-link (#(procedure #:clean #:enforce) chicken.posix#file-link (string string) undefined))
+(chicken.posix#file-lock (#(procedure #:clean #:enforce) chicken.posix#file-lock (port #!optional fixnum integer) (struct lock)))
+(chicken.posix#file-lock/blocking (#(procedure #:clean #:enforce) chicken.posix#file-lock/blocking (port #!optional fixnum integer) (struct lock)))
+(chicken.posix#file-mkstemp (#(procedure #:clean #:enforce) chicken.posix#file-mkstemp (string) fixnum string))
+(chicken.posix#file-modification-time (#(procedure #:clean #:enforce) chicken.posix#file-modification-time ((or string fixnum)) integer))
+(chicken.posix#file-open (#(procedure #:clean #:enforce) chicken.posix#file-open (string fixnum #!optional fixnum) fixnum))
+(chicken.posix#file-owner (#(procedure #:clean #:enforce) chicken.posix#file-owner ((or string fixnum)) fixnum))
+(chicken.posix#file-permissions (#(procedure #:clean #:enforce) chicken.posix#file-permissions ((or string fixnum)) fixnum))
+(chicken.posix#file-position (#(procedure #:clean #:enforce) chicken.posix#file-position ((or port fixnum)) integer))
+(chicken.posix#file-read (#(procedure #:clean #:enforce) chicken.posix#file-read (fixnum fixnum #!optional *) list))
+(chicken.posix#file-read-access? (#(procedure #:clean #:enforce) chicken.posix#file-read-access? (string) boolean))
+(chicken.posix#file-select (#(procedure #:clean #:enforce) chicken.posix#file-select ((or (list-of fixnum) fixnum false) (or (list-of fixnum) fixnum false) #!optional fixnum) * *))
+(chicken.posix#file-size (#(procedure #:clean #:enforce) chicken.posix#file-size ((or string fixnum)) integer))
+(chicken.posix#file-stat (#(procedure #:clean #:enforce) chicken.posix#file-stat ((or string fixnum) #!optional *) (vector-of integer)))
+(chicken.posix#file-test-lock (#(procedure #:clean #:enforce) chicken.posix#file-test-lock (port #!optional fixnum *) boolean))
+(chicken.posix#file-truncate (#(procedure #:clean #:enforce) chicken.posix#file-truncate ((or string fixnum) integer) undefined))
+(chicken.posix#file-type (#(procedure #:clean #:enforce) chicken.posix#file-type ((or string fixnum) #!optional * *) symbol))
+(chicken.posix#file-unlock (#(procedure #:clean #:enforce) chicken.posix#file-unlock ((struct lock)) undefined))
+(chicken.posix#file-write (#(procedure #:clean #:enforce) chicken.posix#file-write (fixnum * #!optional fixnum) fixnum))
+(chicken.posix#file-write-access? (#(procedure #:clean #:enforce) chicken.posix#file-write-access? (string) boolean))
+(chicken.posix#fileno/stderr fixnum)
+(chicken.posix#fileno/stdin fixnum)
+(chicken.posix#fileno/stdout fixnum)
+(chicken.posix#find-files (#(procedure #:enforce) chicken.posix#find-files (string #!rest) list))
+(chicken.posix#get-groups (#(procedure #:clean) chicken.posix#get-groups () list))
+(chicken.posix#get-host-name (#(procedure #:clean) chicken.posix#get-host-name () string))
+(chicken.posix#glob (#(procedure #:clean #:enforce) chicken.posix#glob (#!rest string) list))
+(chicken.posix#group-information (#(procedure #:clean #:enforce) chicken.posix#group-information (fixnum #!optional *) *))
+(chicken.posix#initialize-groups (#(procedure #:clean #:enforce) chicken.posix#initialize-groups (string fixnum) undefined))
+(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-file* (#(procedure #:clean #:enforce) chicken.posix#open-input-file* (fixnum #!optional symbol) input-port))
+(chicken.posix#open-input-pipe (#(procedure #:clean #:enforce) chicken.posix#open-input-pipe (string #!optional symbol) input-port))
+(chicken.posix#open-output-file* (#(procedure #:clean #:enforce) chicken.posix#open-output-file* (fixnum #!optional symbol) output-port))
+(chicken.posix#open-output-pipe (#(procedure #:clean #:enforce) chicken.posix#open-output-pipe (string #!optional symbol) output-port))
+(chicken.posix#open/append fixnum)
+(chicken.posix#open/binary fixnum)
+(chicken.posix#open/creat fixnum)
+(chicken.posix#open/excl fixnum)
+(chicken.posix#open/fsync fixnum)
+(chicken.posix#open/noctty fixnum)
+(chicken.posix#open/nonblock fixnum)
+(chicken.posix#open/rdonly fixnum)
+(chicken.posix#open/rdwr fixnum)
+(chicken.posix#open/read fixnum)
+(chicken.posix#open/sync fixnum)
+(chicken.posix#open/text fixnum)
+(chicken.posix#open/trunc fixnum)
+(chicken.posix#open/write fixnum)
+(chicken.posix#open/wronly fixnum)
+(chicken.posix#parent-process-id (#(procedure #:clean) chicken.posix#parent-process-id () fixnum))
+(chicken.posix#perm/irgrp fixnum)
+(chicken.posix#perm/iroth fixnum)
+(chicken.posix#perm/irusr fixnum)
+(chicken.posix#perm/irwxg fixnum)
+(chicken.posix#perm/irwxo fixnum)
+(chicken.posix#perm/irwxu fixnum)
+(chicken.posix#perm/isgid fixnum)
+(chicken.posix#perm/isuid fixnum)
+(chicken.posix#perm/isvtx fixnum)
+(chicken.posix#perm/iwgrp fixnum)
+(chicken.posix#perm/iwoth fixnum)
+(chicken.posix#perm/iwusr fixnum)
+(chicken.posix#perm/ixgrp fixnum)
+(chicken.posix#perm/ixoth fixnum)
+(chicken.posix#perm/ixusr fixnum)
+(chicken.posix#pipe/buf fixnum)
+(chicken.posix#port->fileno (#(procedure #:clean #:enforce) chicken.posix#port->fileno (port) fixnum))
+(chicken.posix#process (#(procedure #:clean #:enforce) chicken.posix#process (string #!optional (list-of string) (list-of string)) input-port output-port fixnum))
+(chicken.posix#process* (#(procedure #:clean #:enforce) chicken.posix#process* (string #!optional (list-of string) (list-of string)) input-port output-port fixnum *))
+
+(chicken.posix#process-execute
+ (#(procedure #:clean #:enforce) chicken.posix#process-execute (string #!optional (list-of string) (list-of string)) noreturn))
+
+(chicken.posix#process-fork (#(procedure #:enforce) chicken.posix#process-fork (#!optional (or (procedure () . *) false) *) fixnum))
+
+(chicken.posix#process-group-id (#(procedure #:clean #:enforce) chicken.posix#process-group-id () fixnum))
+(chicken.posix#process-run (#(procedure #:clean #:enforce) chicken.posix#process-run (string #!optional (list-of string)) fixnum))
+(chicken.posix#process-signal (#(procedure #:clean #:enforce) chicken.posix#process-signal (fixnum #!optional fixnum) undefined))
+(chicken.posix#process-wait (#(procedure #:clean #:enforce) chicken.posix#process-wait (#!optional fixnum *) fixnum fixnum fixnum))
+(chicken.posix#read-symbolic-link (#(procedure #:clean #:enforce) chicken.posix#read-symbolic-link (string #!optional boolean) string))
+(chicken.posix#regular-file? (#(procedure #:clean #:enforce) chicken.posix#regular-file? ((or string fixnum)) boolean))
+(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#seek/cur fixnum)
+(chicken.posix#seek/end fixnum)
+(chicken.posix#seek/set fixnum)
+(chicken.posix#set-alarm! (#(procedure #:clean #:enforce) chicken.posix#set-alarm! (integer) integer))
+(chicken.posix#set-buffering-mode! (#(procedure #:clean #:enforce) chicken.posix#set-buffering-mode! (port symbol #!optional fixnum) undefined))
+(chicken.posix#set-file-position! (#(procedure #:clean #:enforce) chicken.posix#set-file-position! ((or port fixnum) integer #!optional fixnum) undefined))
+(chicken.posix#set-groups! (#(procedure #:clean #:enforce) chicken.posix#set-groups! ((list-of fixnum)) undefined))
+(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))
+(chicken.posix#set-signal-mask! (#(procedure #:clean #:enforce) chicken.posix#set-signal-mask! ((list-of fixnum)) undefined))
+(chicken.posix#setenv (#(procedure #:clean #:enforce) chicken.posix#setenv (string string) undefined))
+(chicken.posix#signal-handler (#(procedure #:clean #:enforce) chicken.posix#signal-handler (fixnum) (or false (procedure (fixnum) . *))))
+(chicken.posix#signal-mask (#(procedure #:clean) chicken.posix#signal-mask () fixnum))
+(chicken.posix#signal-mask! (#(procedure #:clean #:enforce) chicken.posix#signal-mask! (fixnum) undefined))
+(chicken.posix#signal-masked? (#(procedure #:clean #:enforce) chicken.posix#signal-masked? (fixnum) boolean))
+(chicken.posix#signal-unmask! (#(procedure #:clean #:enforce) chicken.posix#signal-unmask! (fixnum) undefined))
+(chicken.posix#signal/abrt fixnum)
+(chicken.posix#signal/alrm fixnum)
+(chicken.posix#signal/chld fixnum)
+(chicken.posix#signal/cont fixnum)
+(chicken.posix#signal/fpe fixnum)
+(chicken.posix#signal/hup fixnum)
+(chicken.posix#signal/ill fixnum)
+(chicken.posix#signal/int fixnum)
+(chicken.posix#signal/io fixnum)
+(chicken.posix#signal/bus fixnum)
+(chicken.posix#signal/kill fixnum)
+(chicken.posix#signal/pipe fixnum)
+(chicken.posix#signal/prof fixnum)
+(chicken.posix#signal/quit fixnum)
+(chicken.posix#signal/segv fixnum)
+(chicken.posix#signal/stop fixnum)
+(chicken.posix#signal/term fixnum)
+(chicken.posix#signal/trap fixnum)
+(chicken.posix#signal/tstp fixnum)
+(chicken.posix#signal/urg fixnum)
+(chicken.posix#signal/usr1 fixnum)
+(chicken.posix#signal/usr2 fixnum)
+(chicken.posix#signal/vtalrm fixnum)
+(chicken.posix#signal/winch fixnum)
+(chicken.posix#signal/xcpu fixnum)
+(chicken.posix#signal/xfsz fixnum)
+(chicken.posix#signals-list list)
+(chicken.posix#sleep (#(procedure #:clean #:enforce) chicken.posix#sleep (fixnum) fixnum))
+(chicken.posix#block-device? (#(procedure #:clean #:enforce) chicken.posix#block-device? ((or string fixnum)) boolean))
+(chicken.posix#character-device? (#(procedure #:clean #:enforce) chicken.posix#character-device? ((or string fixnum)) boolean))
+(chicken.posix#fifo? (#(procedure #:clean #:enforce) chicken.posix#fifo? ((or string fixnum)) boolean))
+(chicken.posix#socket? (#(procedure #:clean #:enforce) chicken.posix#socket? ((or string fixnum)) boolean))
+(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#symbolic-link? (#(procedure #:clean #:enforce) chicken.posix#symbolic-link? ((or string fixnum)) boolean))
+(chicken.posix#system-information (#(procedure #:clean) chicken.posix#system-information () list))
+(chicken.posix#terminal-name (#(procedure #:clean #:enforce) chicken.posix#terminal-name (port) string))
+(chicken.posix#terminal-port? (#(procedure #:clean #:enforce) chicken.posix#terminal-port? (port) boolean))
+(chicken.posix#terminal-size (#(procedure #:clean #:enforce) chicken.posix#terminal-size (port) fixnum 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#unmap-file-from-memory (#(procedure #:clean #:enforce) chicken.posix#unmap-file-from-memory ((struct mmap) #!optional fixnum) undefined))
+(chicken.posix#unsetenv (#(procedure #:clean #:enforce) chicken.posix#unsetenv (string) undefined))
+(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) . *))
;; srfi-4
diff --git a/utils.scm b/utils.scm
index a6095487..a68a72a2 100644
--- a/utils.scm
+++ b/utils.scm
@@ -41,9 +41,10 @@
qs)
(import scheme chicken)
-(import extras foreign irregex posix)
+(import extras foreign irregex)
(import chicken.data-structures
- chicken.files)
+ chicken.files
+ chicken.posix)
(include "common-declarations.scm")
Trap