diff options
Diffstat (limited to 'qpid/cpp/src')
| -rw-r--r-- | qpid/cpp/src/CMakeLists.txt | 20 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/sys/windows/FileSysDir.cpp | 39 |
2 files changed, 36 insertions, 23 deletions
diff --git a/qpid/cpp/src/CMakeLists.txt b/qpid/cpp/src/CMakeLists.txt index b5c8b319f9..f483a0b9fb 100644 --- a/qpid/cpp/src/CMakeLists.txt +++ b/qpid/cpp/src/CMakeLists.txt @@ -306,7 +306,7 @@ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILER_FLAGS} ${WARNING_FLAGS}") # Expand a bit from the basic Find_Boost; be specific about what's needed. # Boost.system is sometimes needed; it's handled separately, below. if (CMAKE_SYSTEM_NAME STREQUAL Windows) - set (Boost_components filesystem program_options date_time thread unit_test_framework regex) + set (Boost_components program_options date_time thread unit_test_framework regex) else (CMAKE_SYSTEM_NAME STREQUAL Windows) set (Boost_components program_options unit_test_framework) endif (CMAKE_SYSTEM_NAME STREQUAL Windows) @@ -316,7 +316,10 @@ endif (CMAKE_SYSTEM_NAME STREQUAL Windows) # where Boost 1.45 is supported, or we can just accept some versions using # the Additional_versions variable. if (NOT DEFINED Boost_ADDITIONAL_VERSIONS) - set (Boost_ADDITIONAL_VERSIONS "1.45" "1.45.0" "1.46" "1.46.0" "1.47" "1.47.0") + set (Boost_ADDITIONAL_VERSIONS + "1.45" "1.45.0" "1.46" "1.46.0" "1.47" "1.47.0" + "1.48" "1.48.0" "1.49" "1.49.0" "1.50" "1.50.0" + "1.51" "1.51.0" "1.52" "1.52.0") endif (NOT DEFINED Boost_ADDITIONAL_VERSIONS) find_package(Boost 1.33 REQUIRED COMPONENTS ${Boost_components}) @@ -341,10 +344,6 @@ if (NOT Boost_PROGRAM_OPTIONS_LIBRARY) set(Boost_PROGRAM_OPTIONS_LIBRARY boost_program_options) endif (NOT Boost_PROGRAM_OPTIONS_LIBRARY) -if (NOT Boost_FILESYSTEM_LIBRARY) - set(Boost_FILESYSTEM_LIBRARY boost_filesystem) -endif (NOT Boost_FILESYSTEM_LIBRARY) - if (NOT Boost_UNIT_TEST_FRAMEWORK_LIBRARY) set(Boost_UNIT_TEST_FRAMEWORK_LIBRARY boost_unit_test_framework) endif (NOT Boost_UNIT_TEST_FRAMEWORK_LIBRARY) @@ -370,7 +369,6 @@ option(QPID_LINK_BOOST_DYNAMIC "Link with dynamic Boost libs (OFF to link static if (MSVC) install (PROGRAMS ${Boost_DATE_TIME_LIBRARY_DEBUG} ${Boost_DATE_TIME_LIBRARY_RELEASE} - ${Boost_FILESYSTEM_LIBRARY_DEBUG} ${Boost_FILESYSTEM_LIBRARY_RELEASE} ${Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG} ${Boost_PROGRAM_OPTIONS_LIBRARY_RELEASE} ${Boost_REGEX_LIBRARY_DEBUG} ${Boost_REGEX_LIBRARY_RELEASE} ${Boost_THREAD_LIBRARY_DEBUG} ${Boost_THREAD_LIBRARY_RELEASE} @@ -391,10 +389,6 @@ if (MSVC) string (REPLACE .lib .dll _boost_date_time_release ${Boost_DATE_TIME_LIBRARY_RELEASE}) string (REPLACE .lib .dll - _boost_filesystem_debug ${Boost_FILESYSTEM_LIBRARY_DEBUG}) - string (REPLACE .lib .dll - _boost_filesystem_release ${Boost_FILESYSTEM_LIBRARY_RELEASE}) - string (REPLACE .lib .dll _boost_program_options_debug ${Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG}) string (REPLACE .lib .dll _boost_program_options_release ${Boost_PROGRAM_OPTIONS_LIBRARY_RELEASE}) @@ -417,7 +411,6 @@ if (MSVC) endif (NOT Boost_VERSION LESS 103500) install (PROGRAMS ${_boost_date_time_debug} ${_boost_date_time_release} - ${_boost_filesystem_debug} ${_boost_filesystem_release} ${_boost_program_options_debug} ${_boost_program_options_release} ${_boost_regex_debug} ${_boost_regex_release} ${_boost_system_debug} ${_boost_system_release} @@ -466,7 +459,6 @@ if (MSVC) set(Boost_DATE_TIME_LIBRARY "") set(Boost_THREAD_LIBRARY "") set(Boost_PROGRAM_OPTIONS_LIBRARY "") - set(Boost_FILESYSTEM_LIBRARY "") set(Boost_UNIT_TEST_FRAMEWORK_LIBRARY "") set(Boost_REGEX_LIBRARY "") include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/windows/resources ) @@ -768,7 +760,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL Windows) ) set (qpidcommon_platform_LIBS - ${Boost_THREAD_LIBRARY} ${windows_ssl_libs} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_DATE_TIME_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY} ws2_32 ) + ${Boost_THREAD_LIBRARY} ${windows_ssl_libs} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_DATE_TIME_LIBRARY} ${Boost_SYSTEM_LIBRARY} ws2_32 ) set (qpidbroker_platform_SOURCES qpid/broker/windows/BrokerDefaults.cpp qpid/broker/windows/SaslAuthenticator.cpp diff --git a/qpid/cpp/src/qpid/sys/windows/FileSysDir.cpp b/qpid/cpp/src/qpid/sys/windows/FileSysDir.cpp index 88a2e62acc..e090747715 100644 --- a/qpid/cpp/src/qpid/sys/windows/FileSysDir.cpp +++ b/qpid/cpp/src/qpid/sys/windows/FileSysDir.cpp @@ -24,11 +24,9 @@ #include <sys/stat.h> #include <direct.h> #include <errno.h> +#include <windows.h> +#include <strsafe.h> -#include <boost/filesystem/operations.hpp> -#include <boost/filesystem/path.hpp> - -namespace fs=boost::filesystem; namespace qpid { namespace sys { @@ -56,12 +54,35 @@ void FileSysDir::mkdir(void) } void FileSysDir::forEachFile(Callback cb) const { - fs::directory_iterator dirP(dirPath); - fs::directory_iterator endItr; - for (fs::directory_iterator itr (dirP); itr != endItr; ++itr) - { - cb(itr->path().string()); + + WIN32_FIND_DATAA findFileData; + char szDir[MAX_PATH]; + size_t dirPathLength; + HANDLE hFind = INVALID_HANDLE_VALUE; + + // create dirPath+"\*" in szDir + StringCchLength (dirPath.c_str(), MAX_PATH, &dirPathLength); + + if (dirPathLength > (MAX_PATH - 3)) { + throw Exception ("Directory path is too long: " + dirPath); } + + StringCchCopy(szDir, MAX_PATH, dirPath.c_str()); + StringCchCat(szDir, MAX_PATH, TEXT("\\*")); + + // Special work for first file + hFind = FindFirstFileA(szDir, &findFileData); + if (INVALID_HANDLE_VALUE == hFind) { + return; + } + + // process everything that isn't a directory + do { + if (!(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { + std::string fileName(findFileData.cFileName); + cb(fileName); + } + } while (FindNextFile(hFind, &findFileData) != 0); } }} // namespace qpid::sys |
