X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-posix%2Finterface.lisp;h=eff9ce7978c4e870a6624a7bcafb6488b5682f15;hb=371577a214ce2659c271279ad48e4c42e1c0c93e;hp=c09968af26244d94908e25942f73f4f79f39ac11;hpb=bb99e87c76ec62013442efe4573b4f4eaed00e92;p=sbcl.git diff --git a/contrib/sb-posix/interface.lisp b/contrib/sb-posix/interface.lisp index c09968a..eff9ce7 100644 --- a/contrib/sb-posix/interface.lisp +++ b/contrib/sb-posix/interface.lisp @@ -514,7 +514,9 @@ (defmacro define-stat-call (name arg designator-fun type) ;; FIXME: this isn't the documented way of doing this, surely? - (let ((lisp-name (lisp-for-c-symbol name))) + (let ((lisp-name (lisp-for-c-symbol name)) + (real-name #+inode64 (format nil "~A$INODE64" name) + #-inode64 name)) `(progn (export ',lisp-name :sb-posix) (declaim (inline ,lisp-name)) @@ -522,7 +524,7 @@ (declare (type (or null stat) stat)) (with-alien-stat a-stat () (let ((r (alien-funcall - (extern-alien ,(real-c-name (list name :options :largefile)) ,type) + (extern-alien ,(real-c-name (list real-name :options :largefile)) ,type) (,designator-fun ,arg) a-stat))) (when (minusp r) @@ -728,7 +730,10 @@ ;;; environment -(export 'getenv :sb-posix) +(eval-when (:compile-toplevel :load-toplevel) + ;; Do this at compile-time as Win32 code below refers to it as + ;; sb-posix:getenv. + (export 'getenv :sb-posix)) (defun getenv (name) (let ((r (alien-funcall (extern-alien "getenv" (function (* char) c-string)) @@ -760,11 +765,13 @@ (progn ;; Windows doesn't define a POSIX setenv, but happily their _putenv is sane. (define-call* "putenv" int minusp (string c-string)) + (export 'setenv :sb-posix) (defun setenv (name value overwrite) (declare (string name value)) (if (and (zerop overwrite) (sb-posix:getenv name)) 0 (putenv (concatenate 'string name "=" value)))) + (export 'unsetenv :sb-posix) (defun unsetenv (name) (declare (string name)) (putenv (concatenate 'string name "="))))