;; 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")))
;;; longer than 32 bits anyway, right?":-|
(define-alien-type nil
(struct wrapped_stat
- (st-dev unsigned-long) ; would be dev-t in a real stat
+ (st-dev unsigned-int) ; would be dev-t in a real stat
(st-ino ino-t)
(st-mode mode-t)
(st-nlink nlink-t)
(st-uid uid-t)
(st-gid gid-t)
- (st-rdev unsigned-long) ; would be dev-t in a real stat
- (st-size unsigned-long) ; would be off-t in a real stat
+ (st-rdev unsigned-int) ; would be dev-t in a real stat
+ (st-size unsigned-int) ; would be off-t in a real stat
(st-blksize unsigned-long)
(st-blocks unsigned-long)
(st-atime time-t)
(define-alien-routine get-timezone sb!alien:void
(when sb!alien:long :in)
- (minutes-west sb!alien:int :out)
+ (seconds-west sb!alien:int :out)
(daylight-savings-p sb!alien:boolean :out))
-(defun unix-get-minutes-west (secs)
- (multiple-value-bind (ignore minutes dst) (get-timezone secs)
+(defun unix-get-seconds-west (secs)
+ (multiple-value-bind (ignore seconds dst) (get-timezone secs)
(declare (ignore ignore) (ignore dst))
- (values minutes)))
-
-(defun unix-get-timezone (secs)
- (multiple-value-bind (ignore minutes dst) (get-timezone secs)
- (declare (ignore ignore) (ignore minutes))
- (values (deref unix-tzname (if dst 1 0)))))
-
+ (values seconds)))
\f
;;;; sys/time.h
(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"
-(defconstant EINTR 4) ; Unix error code, "Interrupted system call"
-(defconstant EIO 5) ; Unix error code, "I/O error"
-(defconstant EEXIST 17) ; Unix error code, "File exists"
-(defconstant ESPIPE 29) ; Unix error code, "Illegal seek"
-(defconstant EWOULDBLOCK 11) ; Unix error code, "Operation would block"
;;; FIXME: Many Unix error code definitions were deleted from the old
;;; CMU CL source code here, but not in the exports of SB-UNIX. I
;;; (WHN) hope that someday I'll figure out an automatic way to detect
;;; enough of them all in one place here that they should probably be
;;; removed by hand.
\f
-\f
;;;; support routines for dealing with Unix pathnames
(defun unix-file-kind (name &optional check-for-links)