X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Funix.lisp;h=d96189e8ba3815162643424ea6f7d4fab4f7c846;hb=245101f127d61e28b9c864c720eb17973469a904;hp=a25597930a4de581e70dae54b4d1fa3d57270f07;hpb=9f433c5e00c308f72981dca4451d7837de14de48;p=sbcl.git diff --git a/src/code/unix.lisp b/src/code/unix.lisp index a255979..d96189e 100644 --- a/src/code/unix.lisp +++ b/src/code/unix.lisp @@ -204,22 +204,22 @@ (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 @@ -391,6 +391,10 @@ (declare (type unix-fd fd)) (void-syscall ("fsync" int) fd)) + +(defun unix-setsid () + (int-syscall ("setsid"))) + ;;;; sys/ioctl.h ;;; UNIX-IOCTL performs a variety of operations on open i/o @@ -398,8 +402,8 @@ ;;; 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)) ;;;; sys/resource.h @@ -751,13 +755,11 @@ (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))