[phobos] next release (meaning of path)

Andrei Alexandrescu andrei at erdani.com
Mon Jan 3 15:32:09 PST 2011


I discussed this in the past with a colleague (from the ng I think). The 
conclusion was that the sliver of users who need facilities to convert 
path formats from one OS to another is extremely thin.

Andrei

On 1/3/11 5:13 PM, Jonathan M Davis wrote:
> On Monday 03 January 2011 14:42:01 Jesse Phillips wrote:
>> I do not know of a good reason for having a Path type. However I do
>> believe much can be added to help with manipulated paths. Here are
>> some issues I've had.
>>
>> * Converting to the proper sep
>> * getBaseName(getName(file)) will give just the filename and no path
>> when there is no extension, switching the calls gives you nothing.
>> * A quoted path is sometimes valid, and some times not. Namely making
>> system calls needs the quotes or escaped spaces, while std.file
>> expects none of that.
>> * It should be easy to convert one OS path style to another. (Ignoring
>> drive letter)
>
> A fancier feature would be to have a function which converts a file name to one
> which is valid for the current OS. Which characters are valid does vary somewhat
> from file system to file system, but it's OS-specific enough that it can be done.
> Windows OSes have a specific set of characters that they disallow regardless of
> the underlying file system, and Linux file systems disallow the null character and
> sometimes / (so, if you just assume that the null character and / are the only
> disallowed characters, you should be fine). I'm not sure what Mac OS X does
> though. In any case, having a function which will convert characters if
> necessary to make the file name valid for the current OS would be useful for
> cross-platform compatability, and it doesn't require a path type.
>
> If we're looking to try and abstract out some of the path stuff a bit better
> without having a separate path type, then having a function like Haskell's
> combine, which concatenates two parts of a path with the appropriate separator
> (so, effectively part1 ~ sep ~ part2) would help (it would clean up code too,
> though you obviously don't _need_ such a function, since we _can_ just
> concatenate with sep). There are probably other, similar functions that we could
> add which would help with abstracting out some of the system-specific, path pain
> without needing a separate path type.
>
> - Jonathan M Davis
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos


More information about the phobos mailing list