Boost logo

Boost :

From: Beman Dawes (bdawes_at_[hidden])
Date: 2004-09-10 13:01:31


At 10:52 AM 9/10/2004, Martin wrote:

>My real life need is that in Windows there are some files in the root
>directory that you can't query the attributes for. Haven't checked the
>exact conditions but is_directory will throw for me when iterating over
>c:\.

pagefile.sys is one case. There may be others. That does seem like a
practical example; I know I've run into it.

OK, assume we want to add is_accessible(). What are the specifications?

Perhaps:

   Returns: true if exists(ph) and the attributes of ph can successfully
   be queried.

   Note: Certain files or directories exist, but the user may not have
   the proper permissions to access them. For example,
   on Windows, ordinary users do not have permission to access the
   attributes of pagefile.sys. Thus in the directory containing
pagefile.sys,
   exists("pagefile.sys") is true but is_accessible("pagefile.sys") is
   false. An attempt to query the attributes, such as
   is_directory("pagefile.sys") would throw an exception, which can be
   avoided by checking is_accessible("pagefile.sys"). The code might look
   something like:

     for (directory_iterator itr(mypath); itr != directory_iterator();
++itr)
     {
       // ignore directories
       if (!is_accessable(*itr) || is_directory(*itr)) continue;
       ...

Comments?

--Beman


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