An asterisk in a filename confuses uiop:subdirectories on ABCL
If there's an ordinary file with an asterisk in its name (hey, I didn't choose the silly filename that I stumbled over this with, it's in a big pile of ugly names that were thrust upon me! :-), doing a uiop:subdirectories
on its parent directory in ABCL throws an error where it thinks it's seeing a wildcard. It seems to work fine (i.e. ignores it) in SBCL and CCL. This is on Ubuntu 20.04.
Here's a concrete example:
(dfm) dfm@helmsley:/tmp/bug$ pwd
/tmp/bug
(dfm) dfm@helmsley:/tmp/bug$ ls -l
total 672K
-rw-rw-r-- 1 dfm dfm 672K May 26 16:26 asdf.lisp
(dfm) dfm@helmsley:/tmp/bug$ touch foo\*bar.baz
(dfm) dfm@helmsley:/tmp/bug$ ls -l
total 672K
-rw-rw-r-- 1 dfm dfm 672K May 26 16:26 asdf.lisp
-rw-rw-r-- 1 dfm dfm 0 May 26 16:31 foo*bar.baz
(dfm) dfm@helmsley:/tmp/bug$ abcl --noinit
Armed Bear Common Lisp 1.8.0
Java 11.0.11 Ubuntu
OpenJDK 64-Bit Server VM
Low-level initialization completed in 0.145 seconds.
Startup completed in 0.809 seconds.
Type ":help" for a list of available commands.
CL-USER(1): (load "asdf.lisp")
T
CL-USER(2): (asdf:asdf-version)
"3.3.4"
CL-USER(3): (uiop:subdirectories "/tmp/bug/")
#<THREAD "interpreter" {1D33B852}>: Debugger invoked on condition of type FILE-ERROR
Cannot probe a wild pathname as a directory.
Restarts:
0: TOP-LEVEL Return to top level.
[1] CL-USER(4): :bt 20
0: (SYSTEM:BACKTRACE)
1: (INVOKE-DEBUGGER #<FILE-ERROR {4154AB7C}>)
2: org.armedbear.lisp.Lisp.error(Lisp.java:382)
3: org.armedbear.lisp.probe_file$pf_probe_directory.execute(probe_file.java:116)
4: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
5: org.armedbear.lisp.Lisp.evalCall(Lisp.java:602)
6: org.armedbear.lisp.Lisp.eval(Lisp.java:567)
7: org.armedbear.lisp.SpecialOperators$sf_setq.execute(SpecialOperators.java:543)
8: org.armedbear.lisp.Lisp.eval(Lisp.java:557)
9: org.armedbear.lisp.Lisp.processTagBody(Lisp.java:873)
10: org.armedbear.lisp.Primitives$sf_tagbody.execute(Primitives.java:3691)
11: (PROBE-DIRECTORY #P"/tmp/bug/foo*bar.baz")
12: (UIOP/FILESYSTEM:SUBDIRECTORIES "/tmp/bug/")
13: (SYSTEM::%EVAL (UIOP/FILESYSTEM:SUBDIRECTORIES "/tmp/bug/"))
14: (EVAL (UIOP/FILESYSTEM:SUBDIRECTORIES "/tmp/bug/"))
15: (SYSTEM:INTERACTIVE-EVAL (UIOP/FILESYSTEM:SUBDIRECTORIES "/tmp/bug/"))
16: (TOP-LEVEL::REPL)
17: (TOP-LEVEL::TOP-LEVEL-LOOP)
[1] CL-USER(5):