abcl
abcl copied to clipboard
directory of file:// url-pathname fails
(describe #p"file:///Users/alanr/repos/abcl/dist/*.jar")
->
#P"file:///Users/alanr/repos/abcl/dist/*.jar" is an object of type URL-PATHNAME:
HOST (:SCHEME "file")
DEVICE NIL
DIRECTORY (:ABSOLUTE "Users" "alanr" "repos" "abcl" "dist")
NAME :WILD
TYPE "jar"
VERSION NIL
(directory #p"file:///Users/alanr/repos/abcl/dist/*.jar")
-> NIL
(directory #p"/Users/alanr/repos/abcl/dist/*.jar")
->
(#P"/Users/alanr/repos/abcl/dist/abcl-aio-8.jar" #P"/Users/alanr/repos/abcl/dist/abcl-aio-11.jar" #P"/Users/alanr/repos/abcl/dist/abcl-aio.jar" #P"/Users/alanr/repos/abcl/dist/abcl.jar")
Because
(PATHNAME-MATCH-P #P"/Users/alanr/repos/abcl/dist/src/" #P"file:///Users/alanr/repos/abcl/dist/*.jar")
->
NIL
I think for this one
diff --git a/src/org/armedbear/lisp/directory.lisp b/src/org/armedbear/lisp/directory.lisp
index 80630437..76a0803d 100644
--- a/src/org/armedbear/lisp/directory.lisp
+++ b/src/org/armedbear/lisp/directory.lisp
@@ -123,6 +123,8 @@ have truenames which do not exist, this routine will signal a file
error to its caller."
(let ((pathname (merge-pathnames pathspec)))
+ (when (equalp (pathname-host pathname) '(:scheme "file"))
+ (setq pathname (subseq (namestring pathname) #.(length "file://"))))
(when (logical-pathname-p pathname)
(setq pathname (translate-logical-pathname pathname)))
(if (or (position #\* (namestring pathname))
Seems to be present in the main trunk c.f. <https://github.com/armedbear/abcl/blob/master/src/org/armedbear/lisp/directory.lisp#L126>.
~~TODO double check~~
Present in abcl-1.9.2-dev, abcl-1.9.0