forked from AdrianTM/mx-user
-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathcmd.h
More file actions
45 lines (36 loc) · 1.61 KB
/
cmd.h
File metadata and controls
45 lines (36 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#pragma once
#include <QProcess>
enum struct Elevation { No, Yes };
enum struct QuietMode { No, Yes };
class Cmd : public QProcess
{
Q_OBJECT
public:
explicit Cmd(QObject *parent = nullptr);
bool proc(const QString &cmd, const QStringList &args = {}, QString *output = nullptr,
const QByteArray *input = nullptr, QuietMode quiet = QuietMode::No, Elevation elevation = Elevation::No);
bool procAsRoot(const QString &cmd, const QStringList &args = {}, QString *output = nullptr,
const QByteArray *input = nullptr, QuietMode quiet = QuietMode::No);
bool run(const QString &cmd, QString *output = nullptr, const QByteArray *input = nullptr,
QuietMode quiet = QuietMode::No);
[[nodiscard]] QString getOut(const QString &cmd, QuietMode quiet = QuietMode::No);
[[nodiscard]] QString getOutAsRoot(const QString &cmd, const QStringList &args = {},
QuietMode quiet = QuietMode::No);
[[nodiscard]] QString readAllOutput() const;
signals:
void done();
void errorAvailable(const QString &err);
void outputAvailable(const QString &out);
private slots:
void handleStandardError();
void handleStandardOutput();
private:
QString elevationCommand;
QString helper;
QString outBuffer;
static constexpr int EXIT_CODE_COMMAND_NOT_FOUND = 127;
static constexpr int EXIT_CODE_PERMISSION_DENIED = 126;
bool helperProc(const QStringList &helperArgs, QString *output = nullptr, const QByteArray *input = nullptr,
QuietMode quiet = QuietMode::No);
void handleElevationError();
};