(defconstant l_incr 1) ; to increment the file pointer
(defconstant l_xtnd 2) ; to extend the file size
-;;; Accept a file descriptor and move the file pointer ahead
-;;; a certain offset for that file. WHENCE can be any of the following:
-;;; L_SET Set the file pointer.
-;;; L_INCR Increment the file pointer.
-;;; L_XTND Extend the file size.
+;;; Is a stream interactive?
+(defun unix-isatty (fd)
+ (declare (type unix-fd fd))
+ (int-syscall ("isatty" int) fd))
+
(defun unix-lseek (fd offset whence)
+ "Unix-lseek accepts a file descriptor and moves the file pointer by
+ OFFSET octets. Whence can be any of the following:
+
+ L_SET Set the file pointer.
+ L_INCR Increment the file pointer.
+ L_XTND Extend the file size.
+ "
(declare (type unix-fd fd)
- (type (unsigned-byte 32) offset)
(type (integer 0 2) whence))
- #!-(and x86 bsd)
- (int-syscall ("lseek" int off-t int) fd offset whence)
- ;; Need a 64-bit return value type for this. TBD. For now,
- ;; don't use this with any 2G+ partitions.
- #!+(and x86 bsd)
- (int-syscall ("lseek" int unsigned-long unsigned-long int)
- fd offset 0 whence))
+ (int-syscall ("lseek" int off-t int) fd offset whence))
;;; UNIX-READ accepts a file descriptor, a buffer, and the length to read.
;;; It attempts to read len bytes from the device associated with fd
(declare (type unix-fd fd))
(void-syscall ("fsync" int) fd))
\f
+
+(defun unix-setsid ()
+ (int-syscall ("setsid")))
+
;;;; sys/ioctl.h
;;; UNIX-IOCTL performs a variety of operations on open i/o
;;; information.
(defun unix-ioctl (fd cmd arg)
(declare (type unix-fd fd)
- (type (unsigned-byte 32) cmd))
- (void-syscall ("ioctl" int unsigned-int (* char)) fd cmd arg))
+ (type (signed-byte 32) cmd))
+ (void-syscall ("ioctl" int int (* char)) fd cmd arg))
\f
;;;; sys/resource.h
(slot (slot itvo 'it-value) 'tv-usec))
which (alien-sap (addr itvn))(alien-sap (addr itvo))))))
-(defmacro with-timeout (expires &body body)
+(defmacro sb!ext::with-timeout (expires &body body)
"Execute the body, interrupting it with a SIGALRM after at least
EXPIRES seconds have passed. Uses Unix setitimer(), restoring any
previous timer after the body has finished executing"
- (let ((saved-seconds (gensym "SAVED-SECONDS"))
- (saved-useconds (gensym "SAVED-USECONDS"))
- (s (gensym "S")) (u (gensym "U")))
+ (with-unique-names (saved-seconds saved-useconds s u)
`(let (- ,saved-seconds ,saved-useconds)
(multiple-value-setq (- - - ,saved-seconds ,saved-useconds)
(unix-getitimer :real))