Boost logo

Boost :

From: Beman Dawes (bdawes_at_[hidden])
Date: 2003-09-22 12:05:17


At 10:05 PM 9/21/2003, Tim Nowaczyk wrote:

>Is there a limitation on leading dots on directory names in
>boost::filesystem::path? The following code aborts on my debian machine
>with libboost-dev 1.30.0-4
>
>---- Code ----
>#include <iostream>
>#include <boost/filesystem/path.hpp>
>
>int main ()
>{
> boost::filesystem::path p ("/tmp/.temp/1.txt");
> std::cout << p.string () << std::endl;
> std::cout << p.leaf () << std::endl;
> std::cout << p.branch_path ().string () << std::endl;
>
> boost::filesystem::path q ("/tmp/..temp/1.txt");
> std::cout << q.string () << std::endl;
> std::cout << q.leaf () << std::endl;
> std::cout << q.branch_path ().string () << std::endl;
>}

In the 1.30.0 release, there was a limitation and it was hard-wired.

In the current CVS, the name checking mechanism has had a major update. The
default name check function is portable_name(), and it prohibits leading
and trailing periods and hyphens. But you can override that with either one
of the other name check functions provided or a user provided function. You
can override the default itself like this:

boost::filesystem::path::default_name_check(
   boost::filesystem::portable_posix_name );

or you can override for a particular constructor like this:

boost::filesystem::path p ("/tmp/.temp/1.txt",
   boost::filesystem::portable_posix_name);

One of the provided functions, no_check, always returns true so in effect
turns off checking entirely.

HTH,

--Beman


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