
"Arjen Wagenaar" <arjenw@chello.nl> wrote in message news:20060224121751.FPCF21854.amsfep16-int.chello.nl@codeshop6ftss7...
Hi Beman,
PS: I'd like to hear from programmers using wide character file names. Are they working OK? Are they meeting your needs?
I have been updating a windows application (using MSVC7.1, 13.10.3077, and the latest cvs) to support wpaths. It all works pretty much as expected and it didn't take much time to make the changes.
Let me list a few things I've found so far.
== fstream_test asserts
All the tests pass, except for the fstream_test. Here's the output:
execute-test ..\..\..\bin\boost\libs\filesystem\test\fstream_test.test\vc-7_1\debug\threa ding-multi\fstream_test.run ====== BEGIN OUTPUT ====== path tests: in test 1 in test 2 in test 3 in test 4 in test 4.1 in test 5 in test 6 in test 7 in test 8 in test 9 in test 10 in test 11 in test 12 in test 13 in test 14 in test 15
wpath tests: in test 1 in test 2 in test 3 in test 4 in test 4.1 C:\cvs\boost\boost/test/minimal.hpp(122): exception "fopen.c(55) : Assertion failed: *file != _T('\0')" caught in function: 'int __cdecl main(int,char *[])'
This is working on VC++ 8.0 (and other compilers) but failing on 7.1. I'm on the road, and don't have 7.1 installed on my laptop so won't be able to check this out until I get home next week. It is failing on the official regression tests, too, so won't be forgotten.
== missing inline (multiple defined symbols)
There seems to be an inline missing in fstream.hpp (line 45) for the narrow_path() call.
Fixed in CVS. A better fix would be to move both narrow_path() functions to a separate compilation, but I don't want to do that so close to a release. In the meantime, your suggested "inline" fix has been applied so that should work for now.
== openmode differences for path/wpath
I ran into a few calls where fs::ofstreams where opened in binary mode, but the std::ios_base::out flag wasn't specified. This worked fine for paths, but for wpaths this was giving asserts as the narrow_path() function specifically checks for this flag.
Good catch. CVS has been changed to OR in the correct flag. The problem also affected ifstreams and fstreams. Thanks for the reports, --Beman