# HG changeset patch # User Tom Fredrik Blenning Klaussen # Date 1345674405 -7200 # Node ID ec87a79770eed3c941da40868e276a97d8de0c58 # Parent b5943e4bf6763959635d303ee018a9a8af4cc45b Use boost find, to work around problems with QDir. diff -r b5943e4bf676 -r ec87a79770ee CMakeLists.txt --- a/CMakeLists.txt Wed Aug 22 18:48:07 2012 +0200 +++ b/CMakeLists.txt Thu Aug 23 00:26:45 2012 +0200 @@ -5,7 +5,10 @@ SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMake_Modules/") -FIND_PACKAGE(Boost) +SET(Boost_USE_STATIC_LIBS OFF) +SET(Boost_USE_MULTITHREADED ON) +SET(Boost_USE_STATIC_RUNTIME OFF) +FIND_PACKAGE(Boost COMPONENTS filesystem system) IF (Boost_FOUND) INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR}) ADD_DEFINITIONS( "-DHAS_BOOST" ) @@ -51,19 +54,19 @@ SET(CMAKE_CXX_FLAGS "-g2 -Wall -Werror -fno-inline") ADD_EXECUTABLE(DeDupe DeDupe.cpp ${SOURCES} ${MOC_SOURCES}) -TARGET_LINK_LIBRARIES(DeDupe ${QT_LIBRARIES} ${SQLITE3_LIBRARIES}) +TARGET_LINK_LIBRARIES(DeDupe ${QT_LIBRARIES} ${SQLITE3_LIBRARIES} ${Boost_LIBRARIES}) ADD_EXECUTABLE(updateDeDupe updateDeDupe.cpp ${SOURCES} ${MOC_SOURCES}) -TARGET_LINK_LIBRARIES(updateDeDupe ${QT_LIBRARIES} ${SQLITE3_LIBRARIES}) +TARGET_LINK_LIBRARIES(updateDeDupe ${QT_LIBRARIES} ${SQLITE3_LIBRARIES} ${Boost_LIBRARIES}) ENABLE_TESTING() ADD_EXECUTABLE(TestEditDistance TestEditDistance.cpp ${TEST_SOURCES}) ADD_TEST(TestEditDistance TestEditDistance) -TARGET_LINK_LIBRARIES(TestEditDistance ${QT_LIBRARIES}) +TARGET_LINK_LIBRARIES(TestEditDistance ${QT_LIBRARIES} ${Boost_LIBRARIES}) ADD_EXECUTABLE(TestSqliteDBLink TestSqliteDBLink.cpp ${TEST_SOURCES}) ADD_TEST(TestSqliteDBLink TestSqliteDBLink) -TARGET_LINK_LIBRARIES(TestSqliteDBLink ${QT_LIBRARIES}) +TARGET_LINK_LIBRARIES(TestSqliteDBLink ${QT_LIBRARIES} ${Boost_LIBRARIES} ) #ADD_PRECOMPILED_HEADER(TestEditDistance TestFramework.hpp) diff -r b5943e4bf676 -r ec87a79770ee CompileTimeConstants.h --- a/CompileTimeConstants.h Wed Aug 22 18:48:07 2012 +0200 +++ b/CompileTimeConstants.h Thu Aug 23 00:26:45 2012 +0200 @@ -5,4 +5,8 @@ #define DB_DEFAULT_LOCATION "~/.DeDupe.sqlite" #endif +#ifndef USE_BOOST_FIND +#define USE_BOOST_FIND 1 +#endif + #endif //COMPILETIMECONSTANTS_H diff -r b5943e4bf676 -r ec87a79770ee DataController.cpp --- a/DataController.cpp Wed Aug 22 18:48:07 2012 +0200 +++ b/DataController.cpp Thu Aug 23 00:26:45 2012 +0200 @@ -28,8 +28,26 @@ #include #include +#include + void DataController::findFiles(const QDir& dir, QStringList& list) { +#if USE_BOOST_FIND + namespace fs = boost::filesystem; + fs::path someDir(dir.path().toStdString()); + fs::directory_iterator end_iter; + + if ( fs::exists(someDir) && fs::is_directory(someDir)) { + for( fs::directory_iterator dir_iter(someDir) ; dir_iter != end_iter ; ++dir_iter) { + if (fs::is_directory(dir_iter->status()) ) { + findFiles(QString::fromStdWString(dir_iter->path().wstring())); + } + if (fs::is_regular_file(dir_iter->status()) ) { + list << QString::fromStdWString(dir_iter->path().wstring()); + } + } + } +#else foreach(QString filename, dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs)) { filename = dir.absoluteFilePath(filename); findFiles(QDir(filename), list); @@ -38,6 +56,8 @@ foreach(QString filename, dir.entryList(QDir::Files | QDir::NoSymLinks)) { list << dir.absoluteFilePath(filename); } +#endif + } QStringList DataController::findFiles(const QDir& dir)