Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2003-08-11 15:27:56


Thomas Witt <witt_at_[hidden]> writes:

>> I assume you mean the portable representation of the native paths:
>> "/C/C/foo"
>> "/" + *current_path().begin() + "/C/foo" (**)
>> "/C/foo"
>> (**) There is no way to represent "The foo subdirectory of the C
>> directory of the current drive" portably, because it isn't a portable
>> concept.
>
> I would argue that different drives are the non-portable concept.

Of course. The higher level concept represented by the windows path
"\C\foo" depends on the concept of different drives and is therefore
non-portable as well.

>> Therefore, we could pick other sensible answers for the
>> middle path, e.g.:
>> 1. Exception is thrown
>> 2. "./C/foo"
>> 3. "/*/C/foo" where '*' is some character not normally allowed
>> in portable paths.
>>
>
> I think your proposal is clearly inferior to what we currently
> have. With your solution the set of valid portable paths is dependent
> on the set of valid roots on a given platform.

How so? Someone can mount a Z: drive through software on Windows as
easily as they can add a /Z directory on Unix. There's nothing in the
path specification that says paths have to exist in order to be valid.

> I.e. all portable(syntax) paths starting with a slash are
> essentially non-portable.

Not in any sense that's more fundamental than the platform-specific
differences in allowable file and directory names.

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk