|
Boost : |
From: dylan_nicholson (dylan_nicholson_at_[hidden])
Date: 2002-03-06 18:13:52
--- In boost_at_y..., "bill_kempf" <williamkempf_at_h...> wrote:
>
> BTW, Win32 systems already have this concept. The "Shell
Namespace"
> uses SHITEMID identifiers, with "Desktop" as a root, which refers
to
> *all* items available in the shell (which includes all drives, all
> printers, etc.). So from a Win32 perspective I agree with Beman's
> proposal, though I'd like to extend it to include all shell items,
> including printers, etc.
>
Actually what is appears as (by default) "My Computer" in Explorer
acts more sensibly as a top-level "root" (a:\, c:\ etc are under
here).
The fact that under POSIX "/" has a usuable name, but under Windows
the equivalent concept doesn't may be an issue (it might not be clear
how to specify "create a directory at the root directory level",
which is not possible under Windows).
Basically I would expect a top-level iterator on Windows to return
a:\, c:\ etc. (but not Control Panel, Printers etc - I don't see how
you *can* treat these concepts portably). On POSIX there's two
choices, it returns *just* '/', or it returns /bin, /etc, /home etc.
etc. I prefer the former, as
a) The "top-level" root has no name, it simply represents the entire
filesystem
b) All entries under this are named components of the filesystem.
One issue though might be where UNC pathnames fit into the Windows
scheme. I would probably expect to be able to iterate through
everything in \\computer-name (and note you can't do this with
FindFirstFile), and certainly through \\computer-name\sharename, but
in principle it would also be nice to iterate through '\\', which
would return all computers in the network neighbourhood (including
the local machine). If this was possible then it would be quite
reasonable to have \\ returned after a:\...z:\ from the top-level
iterator. But to be honest this functionality is not entirely
trivial to implement and I'm not sure whether it belongs in a generic
file system iterator library. Also where do you stop - I might very
well want to iterate through http:// one day :o)
Dylan
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk