Boost logo

Boost :

From: Jeff Garland (jeff_at_[hidden])
Date: 2002-08-14 13:59:50


I'm trying to write a program to list a directory using the filesystem lib and
I'm running into a couple problems. First, here's the program:

#include "boost/filesystem/operations.hpp"
#include <iostream>

namespace fs = boost::filesystem;

int main()
{
  try {
  
    fs::path start("/home");
    fs::directory_iterator end_itr;
    fs::directory_iterator dir_itr(start);
    for (;dir_itr != end_itr; ++dir_itr) {
      std::cout << (dir_itr->file_path()) << std::endl;
    }
  }
  catch(std::exception& e) {
    std::cout << e.what() << std::endl;
  }

  return 0;
}

The first problem is that the checking code will not construct "/home" as a
valid path. This is a result of invalid_chars containing a '/'. When I
remove '/' from the invalid_chars array the construction is allowed to proceed
as expected. Seems like "/home" should be allowed on Unix or generically?

The second problem is that the program crashes on a ~directory_iterator
when it calls to the counted_base destructor which fails in free. I could
not reproduce the problem by just constructing the iterators so it must have
something to do with the results of operator++. Any ideas?

Jeff

PS: This is using g++ 3.0.3.


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