,@args)))
(if (minusp result)
(values nil (get-errno))
- ,success-form)))
+ ,success-form)))
;;; This is like SYSCALL, but if it fails, signal an error instead of
;;; returning error codes. Should only be used for syscalls that will
"
(declare (type unix-fd fd)
(type (integer 0 2) whence))
- (int-syscall ("lseek" int off-t int) fd offset whence))
+ (let ((result (alien-funcall (extern-alien "lseek" (function off-t int off-t int))
+ fd offset whence)))
+ (if (minusp result )
+ (values nil (get-errno))
+ (values result 0))))
;;; 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
;; a constant. Going the grovel_headers route doesn't seem to be
;; helpful, either, as Solaris doesn't export PATH_MAX from
;; unistd.h.
- #!-(or linux openbsd freebsd sunos osf1) (,stub,)
- #!+(or linux openbsd freebsd sunos osf1)
+ #!-(or linux openbsd freebsd sunos osf1 darwin) (,stub,)
+ #!+(or linux openbsd freebsd sunos osf1 darwin)
(or (newcharstar-string (alien-funcall (extern-alien "getcwd"
(function (* char)
(* char)
size-t))
nil
- #!+(or linux openbsd freebsd) 0
+ #!+(or linux openbsd freebsd darwin) 0
#!+(or sunos osf1) 1025))
(simple-perror "getcwd")))
(slot (slot itvo 'it-value) 'tv-usec))
which (alien-sap (addr itvn))(alien-sap (addr itvo))))))
-(defmacro sb!ext::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"
(unix-setitimer :real 0 0 ,s ,u)
,@body)
(unix-setitimer :real 0 0 ,saved-seconds ,saved-useconds))
- ,@body)))))
-
+ (progn
+ ,@body))))))
\f
(defconstant ENOENT 2) ; Unix error code, "No such file or directory"