mirror of
https://github.com/swaywm/sway.git
synced 2024-11-21 23:41:27 +00:00
sway/output: Improve logging of swaybg execvp failure and more checks
This doesn't catch the error if a background changing command is executed via swaymsg, but improves logging. The additional checks at least propagate if e.g. forking failed.
This commit is contained in:
parent
e39b0b816b
commit
c8676fad54
|
@ -111,7 +111,10 @@ struct cmd_results *cmd_output(int argc, char **argv) {
|
||||||
if (!config->reloading && !config->validating) {
|
if (!config->reloading && !config->validating) {
|
||||||
apply_output_config_to_outputs(output);
|
apply_output_config_to_outputs(output);
|
||||||
if (background) {
|
if (background) {
|
||||||
spawn_swaybg();
|
if (!spawn_swaybg()) {
|
||||||
|
return cmd_results_new(CMD_FAILURE,
|
||||||
|
"Failed to apply background configuration");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -822,7 +822,9 @@ static bool _spawn_swaybg(char **command) {
|
||||||
setenv("WAYLAND_SOCKET", wayland_socket_str, true);
|
setenv("WAYLAND_SOCKET", wayland_socket_str, true);
|
||||||
|
|
||||||
execvp(command[0], command);
|
execvp(command[0], command);
|
||||||
sway_log_errno(SWAY_ERROR, "execvp failed");
|
sway_log_errno(SWAY_ERROR, "failed to execute '%s' "
|
||||||
|
"(background configuration probably not applied)",
|
||||||
|
command[0]);
|
||||||
_exit(EXIT_FAILURE);
|
_exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
_exit(EXIT_SUCCESS);
|
_exit(EXIT_SUCCESS);
|
||||||
|
@ -832,12 +834,13 @@ static bool _spawn_swaybg(char **command) {
|
||||||
sway_log_errno(SWAY_ERROR, "close failed");
|
sway_log_errno(SWAY_ERROR, "close failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (waitpid(pid, NULL, 0) < 0) {
|
int fork_status = 0;
|
||||||
|
if (waitpid(pid, &fork_status, 0) < 0) {
|
||||||
sway_log_errno(SWAY_ERROR, "waitpid failed");
|
sway_log_errno(SWAY_ERROR, "waitpid failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return WIFEXITED(fork_status) && WEXITSTATUS(fork_status) == EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool spawn_swaybg(void) {
|
bool spawn_swaybg(void) {
|
||||||
|
|
Loading…
Reference in a new issue