[armedbear-devel] Commit for bug with spaces in directory on trunk
Mark Evenson
evenson at panix.com
Mon Nov 29 08:57:03 UTC 2010
On Nov 28, 2010, at 23:28 , Erik Huelsmann wrote:
> Hi Mark,
>
> You asked me to verify on Windows too. Having updated to the latest
> and greatest of trunk, I see that I'm now able to run ABCL from a path
> with spaces in them, so far so good. However, you said we require
> spaces to be %-encoded in pathnames now. Or was that in [jar:]file:
> pathnames only?
>
> Because, when I do (DIRECTORY #p"") from "D:\abcl\my docs", I see
>
> (#P"D:/abcl/my docs/")
>
> which is not a file: pathname, so it's to be expected
Correct, it is the behavior I expect.
Perhaps another few sentences of explanation might help everyone
check my reasoning:
The underlying Lisp PATHNAME has no concept of URI encoding, so all
characters "represent themselves". A problem arises in the places
within the ABCL FASL loading routines where we get a java.net.URL
that we need to interpret as a PATHNAME. If this URL represents
a filepath, i.e. has the scheme "file", it is URI encoded according
to RFC3986 (actually probably RFC2396, but the two should be identical
from what I can tell). To be consistent, I implemented changes so that
all input to the PATHNAME routines using a namestring containing
the "file" scheme are decoded as URI encodings, mainly meaning that
sequences of the form '%[hexdigit][hexdigit]' are translated to the
corresponing ISO-8895-1 character. When a namestring is output
that contains the "file" scheme, we encode as a URI. Currently,
the only case we output a "file" scheme in namestrings is when we
compute the value for an entry in a JAR contained on the local
filesystem, i.e.
CL-USER> #p"jar:file:/dir%20with%20spaces/some.jar!/foo.lisp"
"jar:file:/dir%20%with%20spaces/some.jar!/foo.lisp")
CL-USER> #p"file:/dir%20with%20spaces/some.jar" "/dir with
spaces/some.jar"
We could maybe implement a special variable like *PATHNAME-STRICT-URIS*
that always emits the URI encoded version, but I think that would
confuse too many people.
--
"A screaming comes across the sky. It has happened before, but there is nothing to compare to it now."
More information about the armedbear-devel
mailing list