[armedbear-devel] Spaces in pathnames (jar:file:/x/y/z/a space/...)

Mark Evenson evenson at panix.com
Wed Feb 16 06:46:43 UTC 2011


On 2/15/11 10:37 PM, Theam Yong Chew wrote:
> Dear ABCL developers,
>
> While ABCL can handle spaces (&  others) in file pathnames just fine, a
> space in jar file pathnames still doesn't work. I have confirmed this
> on Linux, Mac and Windows. An example using Cygwin,

[…]

When a Pathname starts using URI scheme identifiers like 'jar', the 
strings are then required to obey URI encoding rules.  So try replacing 
#\Space characters with the string "%20".


#<THREAD "interpreter" {9AC0F5}>: Debugger invoked on condition of
> type FILE-ERROR
>    Failed to create URI from 'e:/My Dropbox/temp/a space/hello.jar':
> Illegal character in opaque part
>   at index 10: file:e:/My Dropbox/temp/a space/hello.jar
> Restarts:
>    0: TOP-LEVEL Return to top level.
>

[…]

Try with the URI escaped version, i.e. 
"jar:file:e/My%20Dropbox/temp/a%20spac/hello.jar!/hello.abcl", instead.


A quick glance through the [ABCL JAR-PATHNAME specification][1] shows 
that it doesn't explicity mention this design.  Implicitly, since a 
JAR-PATHNAME is a URI-PATHNAME it has to obey the [URI-PATHNAME 
rules][2], but we could certainly make things clearer.

[1]: 
http://trac.common-lisp.net/armedbear/browser/trunk/abcl/doc/design/pathnames/jar-pathnames.markdown

[2]: 
http://trac.common-lisp.net/armedbear/browser/trunk/abcl/doc/design/pathnames/url-pathnames.markdown

We tried to make the Lisp reader friendly is this regard by DWIMing a 
String inputs into Pathname, but if you find an unambiguous case that 
could be improved to be friendly, we would solicit a specification or 
patches.

Enjoy the bear!

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