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


Reply via email to