summaryrefslogtreecommitdiffstats
path: root/depends
diff options
context:
space:
mode:
Diffstat (limited to 'depends')
-rw-r--r--depends/util/include/pathutils.h14
-rw-r--r--depends/util/src/pathutils.cpp18
2 files changed, 31 insertions, 1 deletions
diff --git a/depends/util/include/pathutils.h b/depends/util/include/pathutils.h
index 6d52097f..ff23fa5d 100644
--- a/depends/util/include/pathutils.h
+++ b/depends/util/include/pathutils.h
@@ -26,6 +26,18 @@ MULTIMC_UTIL_EXPORT QString PathCombine(QString path1, QString path2, QString pa
MULTIMC_UTIL_EXPORT QString AbsolutePath(QString path);
/**
+ * Resolve an executable
+ *
+ * Will resolve:
+ * single executable (by name)
+ * relative path
+ * absolute path
+ *
+ * @return absolute path to executable or null string
+ */
+MULTIMC_UTIL_EXPORT QString ResolveExecutable(QString path);
+
+/**
* Normalize path
*
* Any paths inside the current directory will be normalized to relative paths (to current)
@@ -33,7 +45,7 @@ MULTIMC_UTIL_EXPORT QString AbsolutePath(QString path);
*
* Returns false if the path logic somehow filed (and normalizedPath in invalid)
*/
-QString NormalizePath(QString path);
+MULTIMC_UTIL_EXPORT QString NormalizePath(QString path);
MULTIMC_UTIL_EXPORT QString RemoveInvalidFilenameChars(QString string, QChar replaceWith = '-');
diff --git a/depends/util/src/pathutils.cpp b/depends/util/src/pathutils.cpp
index 35c7f901..af1843ba 100644
--- a/depends/util/src/pathutils.cpp
+++ b/depends/util/src/pathutils.cpp
@@ -40,6 +40,24 @@ QString AbsolutePath(QString path)
return QFileInfo(path).absolutePath();
}
+QString ResolveExecutable(QString path)
+{
+ if (path.isEmpty())
+ {
+ return QString();
+ }
+ if(!path.contains('/'))
+ {
+ path = QStandardPaths::findExecutable(path);
+ }
+ QFileInfo pathInfo(path);
+ if(!pathInfo.exists() || !pathInfo.isExecutable())
+ {
+ return QString();
+ }
+ return pathInfo.absoluteFilePath();
+}
+
/**
* Normalize path
*