0.6.12.18:
[sbcl.git] / src / code / target-load.lisp
index fe2bd03..bb82e38 100644 (file)
                        '(unsigned-byte 8)))
             (load-as-fasl filespec verbose print)
             (load-as-source filespec verbose print))
-        (let ((pn (merge-pathnames (pathname filespec)
-                                   *default-pathname-defaults*)))
-          (if (wild-pathname-p pn)
-              (let ((files (directory pn)))
+        (let (;; FIXME: MERGE-PATHNAMES doesn't work here for
+              ;; FILESPEC="TEST:Load-Test" and
+              ;; (LOGICAL-PATHNAME-TRANSLATIONS "TEST")
+              ;;   = (("**;*.*.*" "/foo/bar/**/*.*")).
+              ;; Physicalizing the pathname before merging 
+              ;; is a workaround, but the ANSI spec talks about
+              ;; MERGE-PATHNAMES accepting (and returning)
+              ;; logical pathnames, so a true fix would probably
+              ;; include fixing MERGE-PATHNAMES, then probably
+              ;; revisiting this code.
+              (ppn (physicalize-pathname (pathname filespec))))
+          (if (wild-pathname-p ppn)
+              (let ((files (directory ppn)))
                 #!+high-security
                 (when (null files)
                   (error 'file-error :pathname filespec))
                 (dolist (file files t)
-                  (internal-load pn
+                  (internal-load ppn
                                  file
                                  internal-if-does-not-exist
                                  verbose
                                  print)))
-              (let ((tn (probe-file pn)))
-                (if (or tn (pathname-type pn))
-                    (internal-load pn
+              (let ((tn (probe-file ppn)))
+                (if (or tn (pathname-type ppn))
+                    (internal-load ppn
                                    tn
                                    internal-if-does-not-exist
                                    verbose
                                    print)
                     (internal-load-default-type
-                     pn
+                     ppn
                      internal-if-does-not-exist
                      verbose
                      print)))))))))