void FileUtil::FindFilesInDirectory( std::string dir, std::string ext, std::vector< std::string > & fileList, bool recursive, bool includepathinfilename ) { if( dir[dir.length()-1] != '/' ) dir = dir + '/'; boost::filesystem::directory_iterator end_itr; for( boost::filesystem::directory_iterator i( dir ); i != end_itr; ++i ) { std::string filename = i->path().filename().string(); if( boost::filesystem::is_directory( i->status() ) ) { if( recursive ) FindFilesInDirectory( dir + filename + "/", ext, fileList, recursive, includepathinfilename ); } else if( ext == "" || filename.find( ext ) != std::string::npos ) fileList.push_back( ( ( includepathinfilename && dir != "./" )? dir : "" ) + filename ); } }
bool opDriver::ValidateFiles(const opParameters& p) { /*=== files ===*/ const vector<opString>& tmpFiles = p.Files.GetValues(); opList<opString> Files(tmpFiles.begin(), tmpFiles.end()); opList<opString>::iterator i = Files.Begin(); opList<opString>::iterator end = Files.End(); opList<opString>::iterator old; while (i != end) { path filepath = (*i).GetString(); if (exists(filepath)) { filepath = to_relative_path(filepath); OhFiles.insert(filepath); old = i; ++i; Files.Erase(old); continue; } ++i; } /*=== files in -d locations ===*/ const vector<opString>& Dirs = p.Directories.GetValues(); for (size_t d = 0; d < Dirs.size(); d++) { i = Files.Begin(); end = Files.End(); while (i != end) { path filepath = Dirs[d].GetString() / to_relative_path((*i).GetString()); if (exists(filepath)) { filepath = to_relative_path(filepath); OhFiles.insert(filepath); old = i; ++i; Files.Erase(old); continue; } ++i; } } /*=== error if files were not found ===*/ if (!Files.IsEmpty()) { Log("Error: The following files were not found:"); i = Files.Begin(); end = Files.End(); while (i != end) { Log("\t'" + *i + "'"); ++i; } Log(""); return false; } /*=== files in -ohd locations ===*/ const vector<opString>& FileDirs = p.FileDirectories.GetValues(); for (size_t d = 0; d < FileDirs.size(); d++) FindFilesInDirectory(FileDirs[d], ".oh", OhFiles); return true; }
void FileUtil::FindFilesInDirectory( std::string dir, std::vector< std::string > & fileList ) { FindFilesInDirectory( dir, "", fileList , false, false ); }