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.)
Cheers,
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@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