changeset 84:848496a57039

If a filepath cannot be interpreted, make this a non-critical error.
author Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
date Thu, 10 Oct 2013 14:14:20 +0200
parents c17475848bf4
children 1f9e27a0bd7f
files DataController.cpp
diffstat 1 files changed, 16 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/DataController.cpp	Thu Oct 10 14:13:54 2013 +0200
+++ b/DataController.cpp	Thu Oct 10 14:14:20 2013 +0200
@@ -30,15 +30,26 @@
   namespace fs = boost::filesystem;
   fs::path someDir(dir.path().toStdString());
   fs::directory_iterator end_iter;
+  boost::system::error_code ec;
 
   if ( fs::exists(someDir) && fs::is_directory(someDir)) {
-    for( fs::directory_iterator dir_iter(someDir) ;
+    for( fs::directory_iterator dir_iter(someDir, ec) ;
 	 dir_iter != end_iter ; ++dir_iter) {
-      if (fs::is_directory(dir_iter->status()) ) {
-	findFiles(QString::fromStdWString(dir_iter->path().wstring()), list);
+      std::wstring wpath;
+      try {
+	wpath = dir_iter->path().wstring();
+      }
+      catch (boost::system::system_error &e) {
+	printf("%s\n", dir_iter->path().c_str());
+	std::cout << e.what() <<std::endl;
       }
-      if (fs::is_regular_file(dir_iter->status()) ) {
-	list << QString::fromStdWString(dir_iter->path().wstring());
+      if (!wpath.empty()) {
+	if (fs::is_directory(dir_iter->status()) ) {
+	  findFiles(QString::fromStdWString(wpath), list);
+	}
+	if (fs::is_regular_file(dir_iter->status()) ) {
+	  list << QString::fromStdWString(wpath);
+	}
       }
     }
   }