bool FolderScanner::scan(const string &path, vector<string> &children, bool findFiles) { if (!isDir(path)) { L_ERROR_P("<%s> does not exist or not a directory", path.c_str()); return false; } fs::path p(path); for (fs::directory_iterator it = fs::directory_iterator(p); it != fs::directory_iterator(); ++it) { fs::path pathChild(*it); // pathChild has linux style slashes inside bool isDir = fs::is_directory(pathChild); //L_DDEBUG_P("%s contains\t%s\tas a %s", p.string().c_str(), pathChild.string().c_str(), (isDir ? "dir" : "file")); if (!(findFiles ^ isDir)) continue; // win32: bugfix state: // pathChild.string() - has linux style slashes everywhere // (string)pathChild - has windows style slashes on vc12, but it's obsolete in vc14 #ifdef _MSC_VER childs.push_back(corecvs::HelperUtils::toNativeSlashes(pathChild.string())); #else children.push_back(pathChild); #endif } return true; }
bool FolderScanner::scan(const string &path, vector<string> &childs, bool findFiles) { fs::path p(path); if (!fs::exists(p)) { L_ERROR_P("<%s> does not exist", p.string().c_str()); return false; } if (!fs::is_directory(p)) { L_ERROR_P("<%s> is not a directory", p.string().c_str()); return false; } for (fs::directory_iterator it = fs::directory_iterator(p); it != fs::directory_iterator(); ++it) { fs::path pathChild(*it); // pathChild has linux style slashes inside bool isDir = fs::is_directory(pathChild); L_DDEBUG_P("%s contains\t%s\tas a %s", p.string().c_str(), pathChild.string().c_str(), (isDir ? "dir" : "file")); if (!(findFiles ^ isDir)) continue; childs.push_back(pathChild); // string(pathChild) has native platform style slashes inside } return true; }