From 477a1a88c6b7f5e5a78a2bbc4a6fe7781b2a0525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Wed, 30 Sep 2015 22:52:55 +0200 Subject: GH-1262 fix relative paths for java binaries --- depends/util/include/pathutils.h | 14 +++++++++++++- depends/util/src/pathutils.cpp | 18 ++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) (limited to 'depends/util') 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 @@ -25,6 +25,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 * @@ -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 * -- cgit v1.2.3