scsh-0.5/scsh/solaris/fdflags.scm

83 lines
1.9 KiB
Scheme

;;; Flags for open(2) and fcntl(2).
;;; Copyright (c) 1993 by Olin Shivers.
;;; Modified for Solaris by tvb@math.ufl.edu
(define-syntax define-open-flags
(syntax-rules ()
((define-errnos form ...)
(begin (define-enum-constant "open" . form) ...))))
(define-open-flags
(read 0)
(write 1)
(read+write 2)
(append 8)
(create #x0100)
(exclusive #x0400)
(no-control-tty #x800) ;claims to be POSIX
(nonblocking #x80) ;claims to be POSIX
(truncate #x0200)
;;; Not POSIX.
(no-delay 4)
(sync #x10))
(define open/access-mask
(bitwise-ior open/read
(bitwise-ior open/write open/read+write)))
;;;; fcntl
;;;; Rough sketch only. Will define a separate proc for each fcntl command.
;
;;;; fcntl commands
;dup
;
;get-flags ; Only gives close-on-exec bit.
;set-flags
;
;get-status ; Returns open flags + get-status flags (below)
;set-status ; Can set: append, sync, async, nbio, nonblocking, no-delay
;
;get-lock
;set-lock
;nonblocking-set-lock
;
;get-record-lock
;set-record-lock
;
;get-owner ; Not POSIX
;set-owner ; Not POSIX
;remote-set-lock ; Not POSIX
;nonblocking-remote-set-lock ; Not POSIX
;remote-get-lock ; Not POSIX
;
;;;; Flags
;
;close-on-exec ; get-flags
;
;async ; get-status
;no-delay ; get-status
;nbio ; get-status
;
;lock/read ; set-lock
;lock/write ; set-lock
;lock/release ; set-lock
;;; These are internal; they are not part of the supported scsh interface.
(define fcntl/close-on-exec 1)
(define fcntl/dupfd 0)
(define fcntl/get-fd-flags 1)
(define fcntl/set-fd-flags 2)
(define fcntl/get-file-flags 3)
(define fcntl/set-file-flags 4)
(define fcntl/get-owner 23) ; F_GETOWN
(define fcntl/set-owner 24) ; F_SETOWN
(define fcntl/get-record-lock 5) ; F_GETLK
(define fcntl/set-record-lock-noblock 6) ; F_SETLK
(define fcntl/set-record-lock 7) ; F_SETLKW
(define lock/read 1) ; F_RDLCK
(define lock/write 2) ; F_WRLCK
(define lock/release 3) ; F_UNLCK