[armedbear-devel] Bugs(?) in pathnames

Mark Evenson evenson at panix.com
Sat Jan 28 13:33:41 UTC 2012

On Jan 27, 2012, at 12:46 PM, Theam Yong Chew wrote:

> Hi devs,
> I've observed a few issues (some I'm not so sure about) with pathnames:
> 1.
> CL-USER> (make-pathname :device '("c:/a.b.jar")
>               :directory '(:absolute "cl-ppcre"))
> ; Evaluation aborted on NIL.

We probably expect the serialized form to be in canonical form
("file:///C:/a/b.jar").   We can loosen this a bit.  Wrap a local
handler on the execution:  the full Common Lisp condition system
should be available.

> Why am I not getting any errors (and not dropping into a debugger)? I
> know the error is because the device is not a list of a pathname ie
> missing a #P.
> 2. What's printed out is not what was read in (trailing /)
> CL-USER> #P"jar:file:c:/a/b.jar!/cl-ppcre/"
> #P"jar:file:c:/a/b.jar!/cl-ppcre"

We attempt [c8n]() (via the notions in the various URI/IRI specs)
here:  does it EVAL again to the same string?  Then that's the
serialized form, locally.  Otherwise, this is a bug.

[c8n]: http://en.wikipedia.org/wiki/Canonicalization

Liberal use of the #P operator locally is advised, as it also gives the
compiler a better chance to optimize.

> 3. Should this repeated jar:file:jar:file thing throw an error?
> #P"jar:file:jar:file:c:/a/b.jar!/cl-ppcre/"
> ==> #P"jar:file:jar:file:c:/a/b.jar!/cl-ppcre"

Such forms should  probably be illegal for abcl-1.1-dev, and should not survive attempts
to introspect their validity.  I'll clarify as part of the abcl-1.1
release, probably refactoring org.aremedbear.lisp.Pathaname into a
protocol description (where I can check constraints a bit easier).

> I think that was all I found, at least for now :-), thanks.

Thanks for using!

More information about the armedbear-devel mailing list