Fix comparison for dereference
[uffi.git] / src / libraries.lisp
index 886464e362663a65615115b62dcf21d4115cc643..578f3d6c29d3ba941fb58e9337c54443fb735717 100644 (file)
@@ -7,9 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id$
-;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2010 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
 
 (defun default-foreign-library-type ()
   "Returns string naming default library type for platform"
-  #+(or win32 cygwin mswindows) "dll"
+  #+(or win32 win64 cygwin mswindows windows) "dll"
   #+(or macosx darwin ccl-5.0) "dylib"
-  #-(or win32 cygwin mswindows macosx darwin ccl-5.0) "so"
+  #-(or win32 win64 cygwin mswindows windows macosx darwin ccl-5.0) "so"
 )
 
 (defun foreign-library-types ()
   "Returns list of string naming possible library types for platform, sorted by preference"
-  #+(or win32 mswindows) '("dll" "lib")
+  #+(or win32 win64 windows mswindows) '("dll" "lib")
   #+(or macosx darwin ccl-5.0) '("dylib" "bundle")
-  #-(or win32 mswindows macosx darwin ccl-5.0) '("so" "a" "o")
+  #-(or win32 win64 windows mswindows macosx darwin ccl-5.0) '("so" "a" "o")
 )
 
 (defun find-foreign-library (names directories &key types drive-letters)
@@ -44,10 +42,10 @@ library type if type is not specified."
     (setq names (list names)))
   (unless (listp directories)
     (setq directories (list directories)))
-  #+(or win32 mswindows)
+  #+(or win32 win64 windows mswindows)
   (unless (listp drive-letters)
     (setq drive-letters (list drive-letters)))
-  #-(or win32 mswindows)
+  #-(or win32 win64 windows mswindows)
   (setq drive-letters '(nil))
   (dolist (drive-letter drive-letters)
     (dolist (name names)
@@ -76,20 +74,19 @@ library type if type is not specified."
 
 (defun load-foreign-library (filename &key module supporting-libraries
                                            force-load)
-  #+(or allegro openmcl digitool sbcl) (declare (ignore module supporting-libraries))
-  #+(or cmu scl) (declare (ignore module))
-  #+lispworks (declare (ignore supporting-libraries))
+  (declare (ignorable module supporting-libraries))
 
   (flet ((load-failure ()
            (error "Unable to load foreign library \"~A\"." filename)))
+    (declare (ignorable #'load-failure))
     (when (and filename (or (null (pathname-directory filename))
                             (probe-file filename)))
       (if (pathnamep filename)    ;; ensure filename is a string to check if already loaded
           (setq filename (namestring (if (null (pathname-directory filename))
                                          filename
                                          ;; lispworks treats as UNC, so use truename
-                                         #+(and lispworks win32) (truename filename)
-                                         #-(and lispworks win32) filename))))
+                                         #+(and lispworks mswindows) (truename filename)
+                                         #-(and lispworks mswindows) filename))))
 
       (if (and (not force-load)
                (find filename *loaded-libraries* :test #'string-equal))
@@ -106,11 +103,10 @@ library type if type is not specified."
                                   (convert-supporting-libraries-to-string
                                    supporting-libraries))))
         #+scl
-        (let ((type (pathname-type (parse-namestring filename))))
-          (alien:load-foreign filename
-                              :libraries
-                              (convert-supporting-libraries-to-string
-                               supporting-libraries)))
+        (alien:load-foreign filename
+                            :libraries
+                            (convert-supporting-libraries-to-string
+                             supporting-libraries))
         #+sbcl
         (handler-case (sb-alien::load-1-foreign filename)
           (sb-int:unsupported-operator (c)