diff options
author | shitbangs <brouwer@annejan.com> | 2014-08-17 18:14:11 +0200 |
---|---|---|
committer | shitbangs <anony@mous> | 2014-08-17 18:14:11 +0200 |
commit | bdc20529f9cd836f2277829750a5c047ad37983c (patch) | |
tree | 87a8992bf967f498bd16dd9bad98e0035a4f49a8 /util.cpp | |
parent | b280b463e60da571cf48b046e1b89f241a40de50 (diff) |
Replaced calls to `which` with custom path resolution thingie
Diffstat (limited to 'util.cpp')
-rw-r--r-- | util.cpp | 53 |
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; +} |