
At 04:49 PM 3/28/2005, Caleb Epstein wrote:
On Mon, 21 Mar 2005 10:32:02 -0500, Caleb Epstein <caleb.epstein@gmail.com> wrote:
On Mon, 14 Mar 2005 08:57:25 -0500, Caleb Epstein <caleb.epstein@gmail.com> wrote:
The file "operations_posix_windows.cpp" in the filesystem library defines the macro _FILE_OFFSET_BITS=64 in an attempt to enable large file support on POSIX platforms. Unfortunately, this definition comes too late for it to work properly on Solaris, so Boost.Filesystem incorrectly reports that large file support is unavailable (cf. http://tinyurl.com/44jvy).
The _FILE_OFFSET_BITS macro definition needs to happen before the inclusion of <sys/types.h>, but this system header is being pulled in courtesy of <boost/config.hpp> which is included by <boost/filesystem/config.hpp>. I'm attaching the output of g++ -H on this file which lists header files as they are included, along with a nesting depth so you can see what is going on.
Can this macro definition just be moved before any other includes? I think it should be harmless on any non-POSIX platform. I think defining it before ANY header is included or on the compiler command-line is the only way for to make this work reliably.
I've received no reply to this bug report, so I'm following up and CC'ing Beman.
Another week passes and no reply. Anyone home? This should be a really simple fix.
OK, changed in CVS for both the main trunk and the i18n branch. The slowdown is simply that 99% of the filesystem effort is currently going into the i18n effort. --Beman