summaryrefslogtreecommitdiffstats
path: root/util.cpp
diff options
context:
space:
mode:
authorshitbangs <brouwer@annejan.com>2014-08-17 18:14:11 +0200
committershitbangs <anony@mous>2014-08-17 18:14:11 +0200
commitbdc20529f9cd836f2277829750a5c047ad37983c (patch)
tree87a8992bf967f498bd16dd9bad98e0035a4f49a8 /util.cpp
parentb280b463e60da571cf48b046e1b89f241a40de50 (diff)
Replaced calls to `which` with custom path resolution thingie
Diffstat (limited to 'util.cpp')
-rw-r--r--util.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/util.cpp b/util.cpp
new file mode 100644
index 00000000..08c81614
--- /dev/null
+++ b/util.cpp
@@ -0,0 +1,53 @@
+#include <QDebug>
+#include <QFileInfo>
+#include <QProcessEnvironment>
+#include <QString>
+#include "util.h"
+
+QProcessEnvironment Util::_env;
+bool Util::_envInitialised;
+
+void Util::initialiseEnvironment()
+{
+ if (!_envInitialised) {
+ _env = QProcessEnvironment::systemEnvironment();
+ _envInitialised = true;
+ }
+}
+
+QString Util::findBinaryInPath(QString binary)
+{
+ initialiseEnvironment();
+
+ QString ret = "";
+
+ binary.prepend("/");
+
+ if (_env.contains("PATH")) {
+ QString path = _env.value("PATH");
+
+ QStringList entries = path.split(':');
+ if (entries.length() < 2) {
+ entries = path.split(';');
+ }
+
+ foreach(QString entry, entries) {
+ QFileInfo *qfi = new QFileInfo(entry.append(binary));
+ qDebug() << entry;
+
+#ifdef WINDOWS
+ if (!qfi->exists()) {
+ QFileInfo qfi = new QFileInfo(entry.append(".exe"));
+ }
+#endif
+ if (!qfi->isExecutable()) {
+ continue;
+ }
+
+ ret = qfi->absoluteFilePath();
+ break;
+ }
+ }
+
+ return ret;
+}