bool FileList::addDirectory(const UString &directory, int recurseDepth) { // Not a directory? Fail. if (!FilePath::isDirectory(directory)) return false; try { // Iterator over the directory's contents for (directory_iterator itEnd, itDir(directory.c_str()); itDir != itEnd; ++itDir) { const UString path = itDir->path().generic_string(); if (FilePath::isDirectory(path)) { // It's a directory. Recurse into it if the depth limit wasn't yet reached if (recurseDepth != 0) if (!addDirectory(path, (recurseDepth == -1) ? -1 : (recurseDepth - 1))) return false; } else // It's a path, add it to the list _files.push_back(FilePath::canonicalize(path, false)); } } catch (...) { return false; } return true; }
static UString findSubDirectory_internal(const UString &directory, const UString &subDirectory, bool caseInsensitive) { try { path dirPath(directory.c_str()); path subDirPath(subDirectory.c_str()); // Iterator over the directory's contents directory_iterator itEnd; for (directory_iterator itDir(dirPath); itDir != itEnd; ++itDir) { if (is_directory(itDir->status())) { // It's a directory. Check if it's the one we're looking for if (caseInsensitive) { if (iequals(itDir->path().filename(), subDirectory.c_str())) return itDir->path().string(); } else { if (equals(itDir->path().filename(), subDirectory.c_str())) return itDir->path().string(); } } } } catch (...) { } return ""; }
bool FileList::addDirectory(const UString &base, const boost::filesystem::path &directory, int recurseDepth) { if (!exists(directory) || !is_directory(directory)) // Path is either no directory or doesn't exist return false; try { // Iterator over the directory's contents directory_iterator itEnd; for (directory_iterator itDir(directory); itDir != itEnd; ++itDir) { if (is_directory(itDir->status())) { // It's a directory. Recurse into it if the depth limit wasn't yet reached if (recurseDepth != 0) if (!addDirectory(base, itDir->path(), (recurseDepth == -1) ? -1 : (recurseDepth - 1))) return false; } else // It's a path, add it to the list addPath(base, itDir->path()); } } catch (...) { return false; } return true; }
bool FilePath::getSubDirectories(const UString &directory, std::list<UString> &subDirectories) { path dirPath(directory.c_str()); try { // Iterate over the directory's contents directory_iterator itEnd; for (directory_iterator itDir(dirPath); itDir != itEnd; ++itDir) { if (is_directory(itDir->status())) { subDirectories.push_back(itDir->path().generic_string()); } } } catch (...) { return false; } return true; }
static UString findSubDirectory_internal(const UString &directory, const UString &subDirectory, bool caseInsensitive) { try { // Special case: . is the same, current directory if (subDirectory == UString(".")) return directory; const path dirPath(directory.c_str()); // Special case: .. is the parent directory if (subDirectory == UString("..")) { path parent = dirPath.parent_path(); if (parent == dirPath) return ""; return parent.generic_string(); } // Iterator over the directory's contents directory_iterator itEnd; for (directory_iterator itDir(dirPath); itDir != itEnd; ++itDir) { if (is_directory(itDir->status())) { // It's a directory. Check if it's the one we're looking for if (caseInsensitive) { if (iequals(itDir->path().filename().string(), subDirectory.c_str())) return itDir->path().generic_string(); } else { if (equals(itDir->path().filename().string(), subDirectory.c_str())) return itDir->path().generic_string(); } } } } catch (...) { } return ""; }
void SofaConfiguration::processDirectory(const QString &dir) { QDir d(QString(path.c_str())+dir); d.setFilter( QDir::Dirs | QDir::Hidden | QDir::NoSymLinks ); std::vector< QString > subDir; const QFileInfoList &listDirectories = #ifdef SOFA_QT4 d.entryInfoList(); QStringList filters; filters << "*.h" << "*.hpp" << "*.cpp" << "*.inl"<< "*.c" << "*.cu" << "*.cuh" << "*.pro" ; d.setNameFilters(filters); for (int j = 0; j < listDirectories.size(); ++j) { QFileInfo fileInfo=listDirectories.at(j); #else *(d.entryInfoList()); QString filters="*.h *.hpp *.cpp *.inl *.c *.cu *.cuh *.pro"; d.setNameFilter(filters); QFileInfoListIterator itDir( listDirectories ); while ( (itDir.current()) != 0 ) { QFileInfo fileInfo=*(itDir.current()); #endif subDir.push_back(fileInfo.fileName()); #ifndef SOFA_QT4 ++itDir; #endif } d.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks ); std::vector< QString > filesInside; const QFileInfoList &listFiles = #ifdef SOFA_QT4 d.entryInfoList(); for (int j = 0; j < listFiles.size(); ++j) { QFileInfo fileInfo=listFiles.at(j); #else *(d.entryInfoList()); QFileInfoListIterator itFile( listFiles ); while ( (itFile.current()) != 0 ) { QFileInfo fileInfo=*(itFile.current()); #endif filesInside.push_back(fileInfo.fileName()); processFile(fileInfo); #ifndef SOFA_QT4 ++itFile; #endif } for (unsigned int i=0; i<subDir.size(); ++i) { if (subDir[i].left(1) == QString(".")) continue; if (subDir[i] == QString("OBJ")) continue; QString nextDir=dir+QString("/")+subDir[i]; processDirectory(nextDir); } } void SofaConfiguration::processFile(const QFileInfo &info) { std::fstream file; file.open(info.absFilePath(), std::ios::in | std::ios::out); std::string line; while (std::getline(file, line)) { std::set< QWidget *>::iterator it; for (it=optionsModified.begin(); it!=optionsModified.end(); it++) { std::string option((*it)->name()); if (line.find(option.c_str()) != std::string::npos) { //Touch the file file.seekg(0); char space; file.get(space); file.seekg(0); file.put(space); std::cout << " found in " << info.absFilePath().ascii() << std::endl; return; } } } file.close(); } }