$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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