scsh-0.5/scsh/scsh-interfaces.scm

859 lines
16 KiB
Scheme
Raw Normal View History

1995-10-13 23:34:21 -04:00
;;; The module interfaces for scsh.
;;; Copyright (c) 1994 by Olin Shivers and David Albertz.
;;; Copyright (c) 1994 by Brian D. Carlstrom
(define-interface posix-fdflags-interface
(export open/read
open/write
open/read+write
open/nonblocking
open/append
open/no-control-tty
open/create
open/truncate
open/exclusive
open/access-mask
fcntl/close-on-exec
fcntl/dupfd
fcntl/get-fd-flags
fcntl/set-fd-flags
fcntl/get-file-flags
fcntl/set-file-flags
fcntl/get-record-lock
fcntl/set-record-lock
fcntl/set-record-lock-noblock
lock/read
lock/write
lock/release))
(define-interface posix-errno-interface
(export errno/2big
errno/acces
errno/again
errno/badf
errno/busy
errno/child
errno/deadlk
errno/dom
errno/exist
errno/fault
errno/fbig
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/xdev))
(define-interface posix-signals-interface
(export signal/abrt
signal/alrm
signal/chld
signal/cont
signal/fpe
signal/hup
signal/ill
signal/int
signal/kill
signal/pipe
signal/quit
signal/segv
signal/stop
signal/term
signal/tstp
signal/ttin
signal/ttou
signal/usr1
signal/usr2))
(define-interface scsh-errors-interface
(export errno-error
error
with-errno-handler*
(with-errno-handler :syntax)))
(define buffered-io-flags-interface
(export bufpol/block
bufpol/line
bufpol/none))
(define-interface scsh-io-interface
(compound-interface buffered-io-flags-interface
(export close
close-after
error-output-port
dup
dup->inport
dup->outport
dup->fdes
open-file
force-output
set-port-buffering
bufpol/block
bufpol/line
bufpol/none
seek
tell
seek/set
seek/delta
seek/end
select
flush-all-ports
y-or-n?
*y-or-n-eof-count*
;; R4RS I/O procedures that scsh provides.
write
char-ready?
read-char
write-char
display
newline
input-port?
output-port?
call-with-input-file
call-with-output-file
with-input-from-file
with-output-to-file
open-input-file
open-output-file
format
lock-region?
lock-region:exclusive?
lock-region:whence
lock-region:start
lock-region:len
lock-region:pid
make-lock-region
lock-region
lock-region/no-block
get-lock-region
unlock-region
with-region-lock*
(with-region-lock :syntax)
with-current-input-port*
(with-current-input-port :syntax)
with-current-output-port*
(with-current-output-port :syntax)
with-error-output-port*
(with-error-output-port :syntax)
call/fdes
release-port-handle
port-revealed
fdes->inport
fdes->outport
move->fdes
open-fdes
pipe
port->string
port->sexp-list
port->string-list
port->list
reduce-port
port->fdes
stdports->stdio
stdio->stdports
read-string
read-string!
read-string/partial
read-string!/partial
write-string
write-string/partial)))
(define-interface scsh-file-interface
(export create-directory
create-fifo
create-hard-link
create-symlink
delete-directory
delete-file
delete-filesys-object
rename-file
set-file-mode
set-file-owner
set-file-group
truncate-file
read-symlink ; Not POSIX.
file-attributes ; Deprecated;
file-info ; preferred.
file-info:type
file-info:device
file-info:inode
file-info:mode
file-info:nlinks
file-info:uid
file-info:gid
file-info:size
file-info:atime
file-info:mtime
file-info:ctime
file-type
file-group
file-inode
file-last-access
file-last-mod
file-last-status-change
file-mode
file-nlinks
file-owner
file-size
file-symlink?
file-directory?
file-fifo?
file-regular?
file-socket?
file-special?
file-not-readable?
file-not-writeable?
file-not-executable?
file-readable?
file-writeable?
file-executable?
file-not-exists?
file-exists?
sync-file
sync-file-system
directory-files
glob
glob-quote
file-match
create-temp-file
temp-file-iterate
temp-file-channel
*temp-file-template*))
(define-interface scsh-process-interface
(export exec
exec-path
exec/env
exec-path/env
%exec
exec-path-search
exit
%exit
suspend
fork
%fork
proc?
proc:pid
pid->proc
autoreap-policy
reap-zombies
wait
wait-any
wait-process-group
status:exit-val
status:stop-sig
status:term-sig
wait/poll
wait/stopped-children
call-terminally
halts?))
(define-interface scsh-process-state-interface
(export umask
set-umask
with-umask*
(with-umask :syntax)
chdir
cwd
with-cwd*
(with-cwd :syntax)
pid
parent-pid
process-group
set-process-group
user-login-name
user-uid
user-effective-uid
user-gid
user-effective-gid
user-supplementary-gids
set-uid
set-gid
system-name
process-times
cpu-ticks/sec))
(define-interface scsh-user/group-db-interface
(export user-info
user-info:name
user-info:uid
user-info:gid
user-info:home-dir
user-info:shell
->uid
->username
group-info
group-info:name
group-info:gid
group-info:members
->gid
->groupname))
(define-interface scsh-command-line-interface
(export command-line-arguments
command-line
arg
arg*
argv))
(define-interface scsh-signals-interface
(export signal-process
signal-process-group
pause-until-interrupt
sleep
itimer))
(define-interface scsh-environment-interface
(export setenv
getenv
env->alist
alist->env
alist-delete
alist-update
alist-compress
with-env*
with-total-env*
(with-env :syntax)
(with-total-env :syntax)
add-before
add-after))
(define-interface scsh-home-interface
(export home-directory
exec-path-list))
(define-interface scsh-regexp-interface
(export string-match
regexp-match?
match:start
match:end
match:substring
make-regexp
regexp?
regexp-exec
regexp-quote))
(define-interface scsh-string-interface
(compound-interface (export substitute-env-vars
index
rindex)
scsh-regexp-interface))
(define-interface scsh-file-names-interface
(export file-name-as-directory
file-name-directory?
file-name-non-directory?
directory-as-file-name
file-name-absolute?
file-name-directory
file-name-nondirectory
split-file-name
path-list->file-name
file-name-extension
file-name-sans-extension
replace-extension
parse-file-name
expand-file-name
simplify-file-name
resolve-tilde-file-name
resolve-file-name
home-dir
home-file))
(define-interface scsh-time-interface
(export make-date
date?
date:seconds
date:minute
date:hour
date:month-day
date:month
date:year
date:tz-name
date:tz-secs
date:summer?
date:week-day
date:year-day
set-date:seconds
set-date:minute
set-date:hour
set-date:month-day
set-date:month
set-date:year
set-date:tz-name
set-date:tz-secs
set-date:summer?
set-date:week-day
set-date:year-day
time+ticks
ticks/sec
time
date
date->string
format-date))
(define-interface scsh-misc-interface
(export (receive :syntax)
arithmetic-shift
bitwise-and
bitwise-ior
bitwise-not
bitwise-xor))
(define-interface scsh-high-level-process-interface
(export (run :syntax)
(exec-epf :syntax)
(& :syntax)
(|| :syntax)
; (:or: :syntax) ; Alternate R4RS syntax for ||.
(&& :syntax)
(run/collecting :syntax)
(run/port+proc :syntax)
(run/port :syntax)
(run/strings :syntax)
(run/file :syntax)
(run/string :syntax)
(run/sexp :syntax)
(run/sexps :syntax)
(run/pty :syntax)
fork/pipe
%fork/pipe
fork/pipe+
%fork/pipe+
tail-pipe
tail-pipe+
run/collecting*
run/port+proc*
run/port*
run/pty*
run/file*
run/string*
run/sexp*
run/sexps*
run/strings*
char-filter
string-filter))
(define-interface scsh-version-interface
(export scsh-major-version
scsh-minor-version
scsh-version-string))
;;; This is probably bogus.
(define-interface string-ports-interface
(export make-string-input-port
call-with-string-output-port
make-string-output-port
string-output-port-output))
(define-interface scsh-utilities-interface
(export del delete index rindex reduce filter first any first? nth
any? every? mapv mapv! vector-every?
optional-arg optional-arg* parse-optionals
check-arg conjoin disjoin negate compose reverse! call/cc
deprecated-proc
deposit-bit-field))
;;; semi-standard network magic numbers
;;; should be available on all platforms
;;; if not, tell us, and we'll move it
;;; to the os-dependent directory
;;; for now, all socket option magic numbers
;;; are considered machine dependent until
;;; there is a standard or a clear portable subset
(define-interface sockets-network-interface
(export shutdown/receives
shutdown/sends
shutdown/sends+receives
herror/host-not-found
herror/try-again
herror/no-recovery
herror/no-data
herror/no-address
address-family/unspecified
address-family/unix
address-family/internet
socket-type/stream
socket-type/datagram
socket-type/raw
;;socket-type/rdm
;;socket-type/seqpacket
protocol-family/unspecified
protocol-family/unix
protocol-family/internet
internet-address/any
internet-address/loopback
internet-address/broadcast
message/out-of-band
message/peek
message/dont-route
level/socket
options/boolean
options/value
options/linger
options/timeout))
;;; actual functions interface
(define-interface scsh-sockets-interface
(export socket-connect
bind-listen-accept-loop
socket?
socket:family
socket:inport
socket:outport
socket-address?
socket-address:family
internet-address->socket-address
socket-address->internet-address
unix-address->socket-address
socket-address->unix-address
create-socket
close-socket
bind-socket
connect-socket
listen-socket
accept-connection
socket-remote-address
socket-local-address
shutdown-socket
create-socket-pair
receive-message
receive-message!
receive-message/partial
receive-message!/partial
send-message
send-message/partial
socket-option
set-socket-option
host-info
host-info?
host-info:name
host-info:aliases
host-info:addresses
network-info
network-info?
network-info:name
network-info:aliases
network-info:net
service-info
service-info?
service-info:name
service-info:aliases
service-info:port
service-info:protocol
protocol-info
protocol-info?
protocol-info:name
protocol-info:aliases
protocol-info:number
))
(define-interface char-set-interface
(export char:newline char:tab char:linefeed char:page char:return char:space
char-ascii?
char-set?
char-set
chars->char-set
string->char-set
ascii-range->char-set
predicate->char-set
->char-set
char-set-members
char-set-contains?
char-set-invert
char-set-union
char-set-intersection
char-set-difference
char-set:upper-case
char-set:lower-case
char-set:numeric
char-set:whitespace
char-set:not-whitespace
char-set:alphabetic
char-set:alphanumeric
char-set:graphic
char-upper-case?
char-lower-case?
char-numeric?
char-whitespace?
char-alphabetic?
char-alphanumeric?
char-graphic?))
(define-interface scsh-field-reader-interface
(export join-strings
field-splitter infix-splitter suffix-splitter sloppy-suffix-splitter
record-reader
field-reader
nth)) ; Kinda handy.
(define-interface scsh-delimited-readers-interface
(export read-line
read-paragraph
read-delimited read-delimited!
%read-delimited!
skip-char-set))
(define-interface awk-interface
(export (awk :syntax)))
(define-interface scsh-dbm-interface
(export dbm-open
dbm-close
dbm-delete
dbm-fetch
dbm-insert
dbm-replace
dbm-firstkey
dbm-nextkey
dbm-record?
dbm-record:open?
btree/method
btree-info:flags
btree-info:cachesize
btree-info:maxkeypage
btree-info:minkeypage
btree-info:psize
btree-info:lorder
btree-info?
make-btree-info
hash/method
hash-info:bsize
hash-info:ffactor
hash-info:nelem
hash-info:cachesize
hash-info:lorder
hash-info?
make-hash-info
recno/method
recno-info:flags
recno-info:cachesize
recno-info:psize
recno-info:lorder
recno-info:reclen
recno-info:bval
recno-info:bfname
recno-info?
make-recno-info))
(define-interface scsh-terminal-interface
(export tcgetattr
tcsetattr
terminal-info?
terminal-info:input-flags
terminal-info:output-flags
terminal-info:control-flags
terminal-info:local-flags
set-terminal-info:input-flags
set-terminal-info:output-flags
set-terminal-info:control-flags
set-terminal-info:local-flags
tc/set-attributes/now
tc/set-attributes/drain
tc/set-attributes/flush
cc/veof
cc/veol
cc/verase
cc/vkill
cc/vintr
cc/vquit
cc/vsusp
cc/vstart
cc/vstop
cc/vmin
cc/vtime
;; NeXT
cc/vwerase
cc/vreprint
cc/vlnext
cc/vdiscard
cc/vdsusp
cc/vquote
iflag/ignbrk
iflag/brkint
iflag/ignpar
iflag/parmrk
iflag/inpck
iflag/istrip
iflag/inlcr
iflag/igncr
iflag/icrnl
iflag/ixon
iflag/ixoff
;;next
iflag/ixany
iflag/imaxbel
;; POSIX
oflag/opost
;; NeXT
oflag/onlcr
; use the same bits as old delay flags
oflag/nldelay
oflag/nl0
oflag/nl1
oflag/nl2
oflag/nl3
oflag/tbdelay
oflag/tab0
oflag/tab1
oflag/tab2
oflag/xtabs
oflag/crdelay
oflag/cr0
oflag/cr1
oflag/cr2
oflag/cr3
oflag/vtdelay
oflag/ff0
oflag/ff1
oflag/bsdelay
oflag/bs0
oflag/bs1
oflag/alldelay
;; NeXT
cflag/cignore
;; POSIX
cflag/csize
cflag/cs5
cflag/cs6
cflag/cs7
cflag/cs8
cflag/cstopb
cflag/cread
cflag/parenb
cflag/parodd
cflag/hupcl
cflag/clocal
;; NeXT
cflag/cstopb110
cflag/par0
cflag/par1
;; NeXT
lflag/echoke
;; POSIX
lflag/echoe
lflag/echok
lflag/echo
lflag/echonl
lflag/icanon
lflag/isig
lflag/iexten
;; NeXT
lflag/echocrt
lflag/echoprt
lflag/echoctl
lflag/altwerase
lflag/mdmbuf
;; POSIX
lflag/tostop
;; NeXT
lflag/xlcase
lflag/xeucbksp
;; POSIX
lflag/noflsh
baud/0
baud/50
baud/75
baud/110
baud/134
baud/150
baud/200
baud/300
baud/600
baud/1200
baud/1800
baud/2400
baud/4800
baud/9600
baud/19200
baud/38400
))