Subject: Re: problem with boost 1.33 filesystem
From: Václav Haisman <[email-masked]>
To: Lewis Hyatt <[email-masked]>
Cc: [email-masked]
Date: Thu, 10 Nov 2005 23:28:44 +0100

Lewis Hyatt wrote:
> Hi All,
> 
> I apologize if this has been brought up before, but I couldn't find any
> mention of it. I think the filesystem component of boost v1.33 currently
> available as part of the cygwin distribution has been compiled
> incorrectly. As mentioned here:
> http://boost.org/libs/filesystem/doc/index.htm#Cgywin (sic), it is
> necessary to compile with -DBOOST_POSIX on cygwin for POSIX emulation to
> work properly; otherwise it uses Windows file names only and does not
> work as expected. Here is a simple demonstration:
> 
> ////////////////////////////
> #include <iostream>
> #include <boost/filesystem/operations.hpp>
> #include <boost/filesystem/exception.hpp>
> namespace bfs = boost::filesystem;
> 
> int main(int argc, char **argv)    {
>     //arg checking omitted
>     try    {
>         bfs::directory_iterator di(argv[1]);
>     }
>     catch (bfs::filesystem_error &ex)    {
>         std::cerr << ex.what() << '\n';
>     }
> }
> ////////////////////////////
> 
> If you pass something Windows can handle as the argument, such as ".",
> then this program works as expected. If you pass a cygwin path, such
> as "~" or "/cygdrive/c", it throws an exception:
> 
> boost::filesystem::directory_iterator constructor: "\home\Lewis": The
> system cannot find the path specified.
> 
> or
> 
> boost::filesystem::directory_iterator constructor: "\cygdrive\c": The
> system cannot find the path specified.
> 
> I believe this is precisely the consequence of omitting -DBOOST_POSIX
> but cannot confirm with certainty.
> 
> Thanks very much to whoever maintains this.
> 
> -Lewis

It should be fixed in package version 1.33.0-2. I have built monotone
and it seems to work fine with POSIX paths.

Vaclav Haisman