std.path review: update
Steven Schveighoffer
schveiguy at yahoo.com
Mon Jul 18 11:56:07 PDT 2011
On Mon, 18 Jul 2011 14:30:51 -0400, Lars T. Kyllingstad
<public at kyllingen.nospamnet> wrote:
> On Mon, 18 Jul 2011 13:26:08 -0400, Steven Schveighoffer wrote:
>
>> On Sun, 17 Jul 2011 18:24:30 -0400, Andrej Mitrovic
>> <andrej.mitrovich at gmail.com> wrote:
>>
>>> On 7/17/11, Lars T. Kyllingstad <public at kyllingen.nospamnet> wrote:
>>>> - Should I add toNativePath(), which replaces '/' with '\' on Windows
>>>> and
>>>> vice versa on POSIX?
>>>
>>> Actually I withdraw that feature request. Some tools will work with
>>> only forward slashes, others only backward slashes, but this is
>>> regardless of what platform they're on.
>>>
>>> E.g. some tools don't work with forward slashes, while GIT doesn't work
>>> with backward slashes when running on Windows.
>>>
>>> I think .replace(r"\", "/") and .replace("/", r"\") are good enough,
>>> but maybe an alias to each version wouldn't be bad. E.g.
>>> "toForwardSlash" and "toBackslash". It's not hard to define this in our
>>> own code, so it's not really a feature request.
>>
>>
>> Hum... I wonder if normalize should do this...
>>
>> Is normalize supposed to create a canonical path? If so, then this
>> needs to happen.
>
> normalize does this on Windows, where '/' is also a directory separator,
> but not on POSIX, where '\' is an ordinary filename character.
>
> I am not entirely sure what the exact definition of "canonical path" is,
> but according to some it entails resolving symlinks. normalize does not
> do this, but it does everything else:
>
> - resolves . and .. to the extent possible
> - collapses redundant directory separators
> - changes '/' to '\' on Windows
OK, this is what I meant. By canonical path, I mean I should be able to
take two paths that point to the same filename and normalize should output
the same string for both.
I agree that the posix version should not replace \ with /, since that's a
Windows specific issue.
I realize there are some limitations when all you are doing is string
manipulation. For example ~steves/blah resolves to the canonical path
/home/steves/blah. Same thing with symlinks.
I guess normalize is the best term for it, don't want to confuse it with
full canonical.
-Steve
More information about the Digitalmars-d
mailing list