Daniel Barlow wrote:
> 
> james anderson <[EMAIL PROTECTED]> writes:
> 
> > is there some logic behind this.? does proper practice require that
> > that all arguments are upcased before attempting logical pathname
> > operations? (note above that an attempt to provide both upper- and
> > lowercase patterns was canonicalized away.)
> 
> According to ANSI, lowercase characters in a logical pathname
> namestring are translated to uppercase.  See CLHS 19.3.1.1.7

i would have understood that, together with the discursive description in cltl2, to 
imply that case normalization would have to occur on components as well as namestrings.
otherwise make-pathname fails to make logical pathnames.

i won't presume that any more and instead always supply upper case for any distinct 
explicit components.

> 
> I'd always believed there's a corresponding restriction on the
> contents of LPN components such that a LPN with lowercase in any of
> its components has undefined behaviour, but I can't find the reference
> for that one today, nor any reference to whether MAKE-PATHNAME
> should do case folding or not.  Although you could read 19.3.1.1.8
> that way, I suppose.

yes, i would have. otherwise it is not making a logical pathname when it should.

> 
> Pathnames are, in my experience, one of the least well-defined parts
> of the standard, and LPNs vie with COMPILE-FILE-PATHNAME for the
> darkest corner of this grey area.
> 

i try to take advantage of their implementation independance. 

> As a user, I (a) try to avoid LPNs anyway, (b) when I must use them,
> use uppercase exclusively.  As an implementor, my vote is for having
> MAKE-PATHNAME fold case.
> 
> In SBCL -
> * (logical-pathname "CL-LIBRARY:CODE;BASE;PARAMETERS.bin")
> #.(CL:LOGICAL-PATHNAME "CL-LIBRARY:CODE;BASE;PARAMETERS.BIN")
> * (make-pathname :host "CL-LIBRARY" :name "foo" :type "bar")
> #.(CL:LOGICAL-PATHNAME "CL-LIBRARY:FOO.BAR")

which is why when i was building for sbcl, the binaries ended up where they were 
supposed to be.

thanks.
...

Reply via email to