Boost logo

Boost :

From: Martin Wille (mw8329_at_[hidden])
Date: 2008-05-29 13:06:50


Beman Dawes wrote:
> Beman Dawes wrote:
>> ...An
>> alternative set I'd be comfortable with would be tail() for the current
>> leaf() and head_path() for the current branch_path().
>
> Hum... After sending that, I read Johan RÃ¥de's "parent" suggestion.
>
> I really like parent_path() for the current branch_path().

Sorry for the bikeshedding, but I really don't like parent_path. The
problem I see is related to symbolic links. "parent" suggests a parent
directory, even though parent_path() might return something that is not
the parent directory of a link target. I think the naming should reflect
the fact that we're operating on names only, not on an actual filesystem
structure. So, IMHO, "basename" is a better choice than anything
containing "parent".

A sketch might help to understand the situation; consider this structure:

/x:
drwxr-xr-x 2 root root 72 2008-05-29 18:52 left
drwxr-xr-x 3 root root 72 2008-05-29 18:52 right1

/x/left:
-rw-r--r-- 1 root root 5 2008-05-29 18:52 foo

/x/right1:
drwxr-xr-x 2 root root 72 2008-05-29 18:55 right2

/x/right1/right2:
lrwxrwxrwx 1 root root 10 2008-05-29 18:55 bar -> ../../left

basename(/x/right1/right2/bar) will return /x/right1/right2

open(basename(/x/right1/right2/bar)) will open something different than
open((/x/right1/right2/bar/..)), as can be demonstrated by using ls:

> ls -l /x/right1/right2
lrwxrwxrwx 1 root root 10 2008-05-29 18:55 bar -> ../../left

> ls -l /x/right1/right2/bar/..
drwxr-xr-x 2 root root 72 2008-05-29 18:52 left
drwxr-xr-x 3 root root 72 2008-05-29 18:52 right1

So, "basename()" and "parent_of()" should be considered operations on
different domains (path names vs filesystem).

Regards,
m


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