1.0.38.9: Integer callback result fixes.
[sbcl.git] / contrib / sb-posix / interface.lisp
index c09968a..eff9ce7 100644 (file)
 
 (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))
         (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)
 
 ;;; 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))
 (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 "="))))