23 #include "pathfinder.h" 25 #include "configuration/doomseekerconfig.h" 26 #include "pathfinder/caseinsensitivefsfileseeker.h" 27 #include "pathfinder/casesensitivefsfileseeker.h" 28 #include "pathfinder/filesearchpath.h" 29 #include "datapaths.h" 31 #include "strings.hpp" 36 DClass<PathFinderResult>
39 QStringList foundFiles;
40 QStringList missingFiles;
51 PathFinderResult::~PathFinderResult()
67 return d->missingFiles;
72 return d->missingFiles;
80 QList<FileSearchPath> searchPaths;
82 QString resolveDir(
const QString &dir)
84 QFileInfo fileInfo(dir);
85 if(fileInfo.isSymLink())
86 fileInfo = QFileInfo(fileInfo.symLinkTarget());
88 if(fileInfo.isBundle())
89 return fileInfo.absoluteFilePath() +
"/Contents/MacOS";
93 return fileInfo.absoluteDir().absolutePath();
95 return fileInfo.absoluteFilePath();
106 d->searchPaths = gConfig.combinedWadseekPaths();
111 foreach (
const QString& path, paths)
113 d->searchPaths << path;
117 PathFinder::~PathFinder()
124 #if defined(Q_OS_WIN32) 126 << gDefaultDataPaths->workingDirectory()
127 << gDefaultDataPaths->workingDirectory() +
"/.." 131 paths <<
"/usr/bin" <<
"/usr/local/bin" <<
"/usr/share/bin" 132 <<
"/usr/games/" <<
"/usr/local/games/" 133 <<
"/usr/share/games/" << gDefaultDataPaths->workingDirectory() <<
".";
135 QStringList pathsCopy(paths);
136 foreach (
const QString &path, pathsCopy)
138 foreach (
const QString &suffix, suffixes)
148 d->searchPaths.prepend(d->resolveDir(dir));
153 d->searchPaths << d->resolveDir(dir);
158 if (d->searchPaths.count() == 0)
169 QString result = seeker->findFile(fileName, d->searchPaths);
177 foreach(
const QString file, files)
179 QString filePath = findFile(file);
180 if (filePath.isNull())
static QString combinePaths(QString pathFront, QString pathEnd)
Result of multiple file search operation done by PathFinder.
Performs a case-insensitive (OS independent) file searches.
QStringList & missingFiles()
Names of not found files.
void addSearchDir(const QString &dir)
Adds directory where search will be performed.
QStringList & foundFiles()
Paths to found files.
PathFinderResult findFiles(const QStringList &files) const
Performs a search for multiple files, marking them as found or missing.
PathFinder()
Constructs PathFinder where paths are read from program configuration from file (WAD) path list setti...
static QString programFilesDirectory(MachineType machineType)
QString findFile(const QString &fileName) const
Performs a search for a single file.
For case-sensitive file systems (like ext).
static PathFinder genericPathFinder(const QStringList &suffixes)
Generic PathFinder that looks in PATH and other common dirs.
void addPrioritySearchDir(const QString &dir)
For case-insensitive file systems (like NTFS).