abcl icon indicating copy to clipboard operation
abcl copied to clipboard

directory of file:// url-pathname fails

Open alanruttenberg opened this issue 3 years ago • 1 comments

(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")

alanruttenberg avatar Jan 06 '22 03:01 alanruttenberg

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))

alanruttenberg avatar Jan 06 '22 03:01 alanruttenberg

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

easye avatar Jun 20 '23 14:06 easye