/** \brief Return a vector of absolute paths to files in the given path * * @param[in] path relative or absolute directory (searched recursively) * @return Any regular files in * @return if absolute directory: path * @return if relative directory: GetResourceDir() / path */ std::vector<fs::path> ListDir(const fs::path& path) { std::vector<fs::path> retval; bool is_rel = path.is_relative(); if (!is_rel && (fs::is_empty(path) || !fs::is_directory(path))) { DebugLogger() << "ListDir: File " << PathToString(path) << " was not included as it is empty or not a directoy"; } else { const fs::path& default_path = is_rel ? GetResourceDir() / path : path; for (fs::recursive_directory_iterator dir_it(default_path); dir_it != fs::recursive_directory_iterator(); ++dir_it) { if (fs::is_regular_file(dir_it->status())) { retval.push_back(dir_it->path()); } else if (!fs::is_directory(dir_it->status())) { TraceLogger() << "Parse: Unknown file not included: " << PathToString(dir_it->path()); } } } if (retval.empty()) { DebugLogger() << "ListDir: No files found for " << path.string(); } return retval; }
boost::filesystem::path make_absolute_path( const boost::filesystem::path& p, const boost::filesystem::path& from) { RAMEN_ASSERT( p.is_relative()); RAMEN_ASSERT( from.is_absolute()); QDir dir( QString( file_cstring( from))); QString fname( QString( file_cstring( p))); QString abs_path( QDir::cleanPath( dir.absoluteFilePath( fname))); return boost::filesystem::path( abs_path.toStdString()); }