Implemented quiet option for cmd_spawn (closes #12)
This commit is contained in:
1
res/doc
1
res/doc
@@ -58,6 +58,7 @@
|
|||||||
# shutdown
|
# shutdown
|
||||||
# reboot
|
# reboot
|
||||||
# cmd_spawn - the command line to pass to /bin/sh -c (started in /)
|
# cmd_spawn - the command line to pass to /bin/sh -c (started in /)
|
||||||
|
# It can be prefixed with "quiet:" to prevent the toast with the process PID from being displayed.
|
||||||
# cmd_output - the timeout in milliseconds (0 < t < 10000), a colon, then the command line to pass to /bin/sh -c (started in /)
|
# cmd_output - the timeout in milliseconds (0 < t < 10000), a colon, then the command line to pass to /bin/sh -c (started in /)
|
||||||
#
|
#
|
||||||
# chain:<action>:<arg>
|
# chain:<action>:<arg>
|
||||||
|
|||||||
@@ -347,19 +347,27 @@ NM_ACTION_(power) {
|
|||||||
|
|
||||||
NM_ACTION_(cmd_spawn) {
|
NM_ACTION_(cmd_spawn) {
|
||||||
#define NM_ERR_RET nullptr
|
#define NM_ERR_RET nullptr
|
||||||
|
char *tmp = strdup(arg);
|
||||||
|
char *cmd = tmp;
|
||||||
|
bool quiet = false;
|
||||||
|
if (!strncmp(tmp, "quiet:", 6)) {
|
||||||
|
cmd += 6;
|
||||||
|
quiet = true;
|
||||||
|
}
|
||||||
QProcess proc;
|
QProcess proc;
|
||||||
uint64_t pid;
|
uint64_t pid;
|
||||||
bool ok = proc.startDetached(
|
bool ok = proc.startDetached(
|
||||||
QStringLiteral("/bin/sh"),
|
QStringLiteral("/bin/sh"),
|
||||||
QStringList(std::initializer_list<QString>{
|
QStringList(std::initializer_list<QString>{
|
||||||
QStringLiteral("-c"),
|
QStringLiteral("-c"),
|
||||||
QString::fromUtf8(arg),
|
QString::fromUtf8(cmd),
|
||||||
}),
|
}),
|
||||||
QStringLiteral("/"),
|
QStringLiteral("/"),
|
||||||
(qint64*)(&pid)
|
(qint64*)(&pid)
|
||||||
);
|
);
|
||||||
|
free(tmp);
|
||||||
NM_ASSERT(ok, "could not start process");
|
NM_ASSERT(ok, "could not start process");
|
||||||
NM_RETURN_OK(nm_action_result_toast("Successfully started process with PID %lu.", (unsigned long)(pid)));
|
NM_RETURN_OK(quiet ? nm_action_result_silent() : nm_action_result_toast("Successfully started process with PID %lu.", (unsigned long)(pid)));
|
||||||
#undef NM_ERR_RET
|
#undef NM_ERR_RET
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user