diff options
author | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2018-08-30 19:17:41 +0200 |
---|---|---|
committer | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2018-11-04 18:27:48 +0100 |
commit | 3b10fd3a556f5b5fd3b4ec13951c006d6dd328c1 (patch) | |
tree | eaec4a616925a5b590d5f756bc99284ac17e305f /src | |
parent | fd3582c395ee81916cbeecb24640ba13f77b85cd (diff) |
Automatically detect and use WSL binaries.
Treat WSL as if it contained binaries that are in the PATH.
Diffstat (limited to 'src')
-rw-r--r-- | src/executor.h | 12 | ||||
-rw-r--r-- | src/util.cpp | 11 |
2 files changed, 17 insertions, 6 deletions
diff --git a/src/executor.h b/src/executor.h index 2a8b67cd..2d96be22 100644 --- a/src/executor.h +++ b/src/executor.h @@ -73,13 +73,13 @@ public: const QStringList &args, QString input = QString(), bool readStdout = false, bool readStderr = true); - int executeBlocking(QString app, const QStringList &args, - QString input = QString(), - QString *process_out = Q_NULLPTR, - QString *process_err = Q_NULLPTR); + static int executeBlocking(QString app, const QStringList &args, + QString input = QString(), + QString *process_out = Q_NULLPTR, + QString *process_err = Q_NULLPTR); - int executeBlocking(QString app, const QStringList &args, - QString *process_out, QString *process_err = Q_NULLPTR); + static int executeBlocking(QString app, const QStringList &args, + QString *process_out, QString *process_err = Q_NULLPTR); void setEnvironment(const QStringList &env); diff --git a/src/util.cpp b/src/util.cpp index c194c3fc..147d609c 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -110,6 +110,17 @@ QString Util::findBinaryInPath(QString binary) { break; } } +#ifdef Q_OS_WIN + if (ret.isEmpty()) + { + binary.remove(0, 1); + binary.prepend("wsl "); + QString out, err; + if (Executor::executeBlocking(binary, {"--version"}, &out, &err) == 0 && + !out.isEmpty() && err.isEmpty()) + ret = binary; + } +#endif return ret; } |