X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-load.lisp;h=bb82e38ca4c9be35f4f4c2c26dbe05bf55c5f6cf;hb=dccfa0f4e378a267744c03b1416accdf9d888987;hp=fe2bd032dc2000f1b8d525c37d7b02e506fcd401;hpb=68b13d8fac5207d339de227871818203f4cab0ab;p=sbcl.git diff --git a/src/code/target-load.lisp b/src/code/target-load.lisp index fe2bd03..bb82e38 100644 --- a/src/code/target-load.lisp +++ b/src/code/target-load.lisp @@ -186,28 +186,37 @@ '(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)))))))))