>>>>> "Fare" == Far <Far> writes:
Fare> The IRC discussion spawned by my previous bug report raised the point
Fare> of read-write invariance of #p syntax, and the fact that once again,
Fare> cmucl, sbcl and openmcl (and gcl, too) might be wrong by not
Fare> distinguishing the following:
Fare> (MAKE-PATHNAME :DIRECTORY NIL)
Fare> => #P""
Fare> (MAKE-PATHNAME :DIRECTORY '(:RELATIVE))
Fare> => #P""
Fare> clisp, allegro and lispworks agree that it is a good idea to print the
Fare> latter as follows
Fare> => #P"./"
Fare> which of course pushes back the problem when you try to print
Fare> (MAKE-PATHNAME :DIRECTORY '(:RELATIVE "."))
Fare> => #P"./"
I think this is all fixed now. MAKE-PATHNAME is allowed to
canonicalize the result, so '(:relative "." <stuff> "." "." <more>)
gets canonicalized by removing all ".".
And we print out '(:relative) as #p"./", which also gets read in as
'(:relative).
The only problem now is #p"./." which gets read as a pathname with
directory '(:relative) and name ".". On unix, I think this is wrong.
"." cannot be the name of a file---it's always a directory. I don't
have a fix for this.
I'll check in the pathname changes soon. This will include a change
where we give a warning if a "/" occurs in any component of the
directory.
(Perhaps that should be a continuable error?)
Ray