[asdf-devel] ASDF2: Bug in merge-pathnames*

Jean-Claude Beaudoin jean.claude.beaudoin at gmail.com
Wed May 19 11:20:14 UTC 2010

Faré wrote:
> It's hopefully fixed in 1.725, except that somehow in the commit
> message, I wrote pjb where I should have written jcb. Oops.

Thanks for the commit. And don't worry, I have been called worst...

> My "solution" to the "current-directory" thing was to rename it to
> "default-directory".

I am not sure I understand whether this really serves your purpose.
"default-directory" and "current-directory" are two quite different
concepts after all.  I guess that now function "default-directory" is
in a better position to declare itself correct by construction.
But I still don't see what usefulness it will have on lisp systems
that chose to not accept (truename #P"") as designating anything
special (as, for one thing, the process current directory). Nothing
in the ANSI CL standard mandates (truename #P"") to mean anything
and I would even argue that assigning a meaning to (truename #P"")
runs against the spirit of the ANSI CL text on truename...
(I say this above in the context of *default-pathname-defaults*
being #P"" itself.)


Jean-Claude Beaudoin

> [ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
> You think you know when you can learn, are more sure when you can write,
> even more when you can teach, but certain when you can program.
>         — Alan Perlis
> On 18 May 2010 06:32, Jean-Claude Beaudoin
> <jean.claude.beaudoin at gmail.com> wrote:
>> Here is a patch against 1.720 that fixes a weakness in merge-pathnames*.
>> This was a show stopper in my system.
>> It seems that merge-pathnames* assumes that *default-pathname-defaults*
>> has some interesting value to contribute which is not always the case.
>> In my system and in a few others (clisp comes to mind) the usual value
>> of *default-pathname-defaults* is #P"" which ends up giving
>> (pathname-directory *default-pathname-defaults*) => nil
>> Then, (append nil (cdr directory)) is probably not a "valid pathname directory".
>> In clisp passing this not so "valid pathname directory" to make-pathname will
>> result in a visit in the debugger...
>> I want also to insist again on the issue of accessing the process current directory.
>> Assuming that *default-pathname-defaults* is a substitute for the process current
>> directory is not portable ANSI Common Lisp code. The following definition is very
>> likely to be wrong on at least one ANSI Common Lisp conforming implementation:
>> (defun current-directory ()
>>   (truenamize (pathname-directory-pathname *default-pathname-defaults*)))
>> Cheers,
>> Jean-Claude Beaudoin

More information about the asdf-devel mailing list