-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcmd.h
More file actions
39 lines (32 loc) · 1.66 KB
/
cmd.h
File metadata and controls
39 lines (32 loc) · 1.66 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
#pragma once
#include <QProcess>
class QTextStream;
enum struct QuietMode { No, Yes };
enum struct StderrMode { Inherit, Suppress };
class Cmd : public QProcess
{
Q_OBJECT
public:
explicit Cmd(QObject *parent = nullptr);
[[nodiscard]] QString getOut(const QString &cmd, QuietMode quiet = QuietMode::No);
[[nodiscard]] QString getOutAsRoot(const QString &program, const QStringList &args = {},
QuietMode quiet = QuietMode::No,
StderrMode stderrMode = StderrMode::Inherit);
bool proc(const QString &program, const QStringList &args = {}, QString *output = nullptr,
const QByteArray *input = nullptr, QuietMode quiet = QuietMode::No);
bool procAsRoot(const QString &program, const QStringList &args = {}, QString *output = nullptr,
const QByteArray *input = nullptr, QuietMode quiet = QuietMode::No,
StderrMode stderrMode = StderrMode::Inherit);
bool run(const QString &cmd, QuietMode quiet = QuietMode::No);
bool runAsRoot(const QString &program, const QStringList &args = {}, QuietMode quiet = QuietMode::No,
StderrMode stderrMode = StderrMode::Inherit);
bool appendLineAsRoot(const QString &path, const QString &line, QuietMode quiet = QuietMode::No);
bool writeFileAsRoot(const QString &path, const QByteArray &content, QuietMode quiet = QuietMode::No);
signals:
void done();
private:
bool helperProc(const QStringList &helperArgs, QString *output = nullptr, const QByteArray *input = nullptr,
QuietMode quiet = QuietMode::No);
QString elevate;
QString helper;
};