Hi Christopher,

I see your point. On the other hand, I think that the paragraph below, from 19.4 "The Filenames Dictionary. Function TRANSLATE-LOGICAL-PATHNAME", makes behavior of Clozure CL pretty conforming:

"translate-logical-pathname might perform additional translations, typically to provide translation of file types to local naming conventions, to accomodate physical file systems with limited length names, or to deal with special character requirements such as translating hyphens to underscores or uppercase letters to lowercase. Any such additional translations are implementation-defined. Some implementations do no additional translations."

In any case thanks for your response and help.
Aleksandr


On Tue, Jan 19, 2010 at 1:29 PM, Christophe Rhodes <csr21@cantab.net> wrote:
> Aleksandr Skobelev <al.skobelev@gmail.com> writes:
>
>> On Mon, Jan 18, 2010 at 9:53 PM, Christophe Rhodes <csr21@cantab.net> wrote:
>>> Aleksandr Skobelev <al.skobelev@gmail.com> writes:
>>>
>>>> 2) it returned a proper pathname for "home", but for "home:Library;"
>>>> it didn't keep case of characters and returned
>>>> #P"/Users/asko/library/" while it should return
>>>> #P"/Users/asko/Library/"
>>>> On Mac OS X with case-sensitive file-system as it is on my mac, the
>>>> item 2 leads to producing invalid paths.
>>>
>>> I refer you to CLHS 19.3.1.17: Logical pathnames destroy case
>>> information.  If you need case sensitivity in your pathnames, don't use
>>> logical pathnames.
>>
>> As far as I understand CLHS 19.3.1.1.7 "Lowercase Letters in a Logical
>> Pathname Namestring" refers to constructing of logical pathnames not
>> to translating them.
>
> In order to translate a logical pathname, you must first construct one.
>
> When you do
>  (translate-logical-pathname "home:Library;")
> the namestring "home:Library;" is coerced to a pathname by
> TRANSLATE-LOGICAL-PATHNAME; because the HOME host exists, that pathname
> will be a logical pathname.  Logical pathname namestrings upcase
> lower-case letters in the namestring, so the pathname you will get, by
> the standard, has components.
>  :host "HOME" :directory (:relative "LIBRARY")
> at which point you have lost the information
>
> If you need to refer to mixed-case pathnames with logical pathnames, you
> must define explicit translations, such as an entry
>  ("LIBRARY;**;*.*" "/Users/asko/Library/**/*.*")
> in (logical-pathname-translations "HOME").
>
>> Also it looks strange that there is direct translation to
>> logical-pathname, but there is no appropriate reverse translation. And
>> I see that Closure CL  handles this situation correctly returning the
>> pathname with proper letter case.
>
> "correctly" according to whom?  Conveniently, perhaps, but I believe not
> conformingly.
>
> Cheers,
>
> Christophe
>



--
"Perfection is attained by slow degrees. She requires the hand of time."
 – Voltaire