mirror of
https://github.com/Mahdi-zarei/nekoray.git
synced 2026-01-08 06:19:13 +08:00
34 lines
1009 B
C++
34 lines
1009 B
C++
#include "LinuxCap.h"
|
|
|
|
#include <QDebug>
|
|
#include <QProcess>
|
|
#include <QStandardPaths>
|
|
|
|
int Linux_Run_Command(const QString &commandName, const QString &args) {
|
|
auto command = QString("pkexec %1 %2").arg(Linux_FindCapProgsExec(commandName)).arg(args);
|
|
return system(command.toStdString().c_str());
|
|
}
|
|
|
|
bool Linux_HavePkexec() {
|
|
QProcess p;
|
|
p.setProgram("pkexec");
|
|
p.setArguments({"--help"});
|
|
p.setProcessChannelMode(QProcess::SeparateChannels);
|
|
p.start();
|
|
p.waitForFinished(500);
|
|
return (p.exitStatus() == QProcess::NormalExit ? p.exitCode() : -1) == 0;
|
|
}
|
|
|
|
QString Linux_FindCapProgsExec(const QString &name) {
|
|
QString exec = QStandardPaths::findExecutable(name);
|
|
if (exec.isEmpty())
|
|
exec = QStandardPaths::findExecutable(name, {"/usr/sbin", "/sbin"});
|
|
|
|
if (exec.isEmpty())
|
|
qDebug() << "Executable" << name << "could not be resolved";
|
|
else
|
|
qDebug() << "Found exec" << name << "at" << exec;
|
|
|
|
return exec.isEmpty() ? name : exec;
|
|
}
|