Boost.Filesystem -- bug or user error?
I'm using Boost.Filesystem (along with Boost.Regex, and an unofficial glob library by Angus Leeming) to do globbing and batch file processing in a utility of mine. Environment is boost_1_32_0, Windows XP, MSVC++7.1. The Glob/Regex stuff seems fine -- I fill a vector<string> container with the results and then pass it off to another piece of code to actually do the work. Part of the work involves printing the filename (without path, but with extension). Here's a snippet: int ProcessFile(ofstream &Out, const char *FullPathName) { int Success = 0; fs::path OutFilePath(FullPathName, fs::native); std::string JustName, NameNoExt; JustName = fs::basename(OutFilePath.leaf()) + fs::extension(OutFilePath.leaf()); NameNoExt = fs::basename(OutFilePath.leaf()); PrintItem(Out, FullPathName, JustName.c_str(), NameNoExt.c_str()); return(Success); } // ProcessFile Ignore that it's poor code quality -- this is just a quick & dirty hack program. Everything works great until this code is fed a FullPathName of: eggs+butter01d-thumbs.jpg (In this example, I'm running with relative paths, so there is no "path" part to discard. Makes troubleshooting even simpler.) It throws an exception of boost::filesystem::path invalid name eggs+butter01d-thumbs.jpg in path eggs+butter01d-thumbs.jpg on line 341 of path_posix_windows.cpp It appears to displike the + character. Maybe it's pilot error, but + is apparently a valid symbol in the Win32/NTFS filesystem, and Windows permits it, generally. If it were a weird platform-specific symbol, I would have thought that creating the fs::path with fs::path OutFilePath(FullPathName, fs::native); would have translated it into somethign boost-friendly. Anyone care to tell me what I'm doing wrong? Thanks in advance for any advice. -- Chris 'Xenon' Hanson | Xenon @ 3D Nature | http://www.3DNature.com/ "I set the wheels in motion, turn up all the machines, activate the programs, and run behind the scenes. I set the clouds in motion, turn up light and sound, activate the window, and watch the world go 'round." -Prime Mover, Rush.
Chris 'Xenon' Hanson wrote:
I'm using Boost.Filesystem (along with Boost.Regex, and an unofficial glob library by Angus Leeming) to do globbing and batch file processing in a utility of mine. Environment is boost_1_32_0, Windows XP, MSVC++7.1. The Glob/Regex stuff seems fine
Note that the globbing will fail to mimic Windows' natural upper/lower case matching behaviour because that requires it to interrogate more than just the current file name. I had no idea how to address that problem so the project petered out rather. Angus
participants (2)
-
Angus Leeming
-
Chris 'Xenon' Hanson