nekoray_Mahdi-zarei/sys/linux/LinuxCap.cpp
2024-10-09 20:35:41 +03:30

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;
}