summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>2018-08-30 19:17:41 +0200
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>2018-11-04 18:27:48 +0100
commit3b10fd3a556f5b5fd3b4ec13951c006d6dd328c1 (patch)
treeeaec4a616925a5b590d5f756bc99284ac17e305f /src
parentfd3582c395ee81916cbeecb24640ba13f77b85cd (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.h12
-rw-r--r--src/util.cpp11
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;
}