diff options
author | Tamino Bauknecht <dev@tb6.eu> | 2023-12-12 22:54:31 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2024-01-29 14:12:39 +0100 |
commit | c8676fad54bb0f4152947a6781626872bfa6ad64 (patch) | |
tree | eeb76f1fe675424703eed79b97325af23b355d62 | |
parent | build: bump version to 1.10-dev (diff) | |
download | sway-c8676fad54bb0f4152947a6781626872bfa6ad64.tar.gz sway-c8676fad54bb0f4152947a6781626872bfa6ad64.tar.zst sway-c8676fad54bb0f4152947a6781626872bfa6ad64.zip |
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.
-rw-r--r-- | sway/commands/output.c | 5 | ||||
-rw-r--r-- | sway/config/output.c | 9 |
2 files changed, 10 insertions, 4 deletions
diff --git a/sway/commands/output.c b/sway/commands/output.c index df32c673..462dffd2 100644 --- a/sway/commands/output.c +++ b/sway/commands/output.c | |||
@@ -111,7 +111,10 @@ struct cmd_results *cmd_output(int argc, char **argv) { | |||
111 | if (!config->reloading && !config->validating) { | 111 | if (!config->reloading && !config->validating) { |
112 | apply_output_config_to_outputs(output); | 112 | apply_output_config_to_outputs(output); |
113 | if (background) { | 113 | if (background) { |
114 | spawn_swaybg(); | 114 | if (!spawn_swaybg()) { |
115 | return cmd_results_new(CMD_FAILURE, | ||
116 | "Failed to apply background configuration"); | ||
117 | } | ||
115 | } | 118 | } |
116 | } | 119 | } |
117 | 120 | ||
diff --git a/sway/config/output.c b/sway/config/output.c index 1a5215fe..54ebaa17 100644 --- a/sway/config/output.c +++ b/sway/config/output.c | |||
@@ -822,7 +822,9 @@ static bool _spawn_swaybg(char **command) { | |||
822 | setenv("WAYLAND_SOCKET", wayland_socket_str, true); | 822 | setenv("WAYLAND_SOCKET", wayland_socket_str, true); |
823 | 823 | ||
824 | execvp(command[0], command); | 824 | execvp(command[0], command); |
825 | sway_log_errno(SWAY_ERROR, "execvp failed"); | 825 | sway_log_errno(SWAY_ERROR, "failed to execute '%s' " |
826 | "(background configuration probably not applied)", | ||
827 | command[0]); | ||
826 | _exit(EXIT_FAILURE); | 828 | _exit(EXIT_FAILURE); |
827 | } | 829 | } |
828 | _exit(EXIT_SUCCESS); | 830 | _exit(EXIT_SUCCESS); |
@@ -832,12 +834,13 @@ static bool _spawn_swaybg(char **command) { | |||
832 | sway_log_errno(SWAY_ERROR, "close failed"); | 834 | sway_log_errno(SWAY_ERROR, "close failed"); |
833 | return false; | 835 | return false; |
834 | } | 836 | } |
835 | if (waitpid(pid, NULL, 0) < 0) { | 837 | int fork_status = 0; |
838 | if (waitpid(pid, &fork_status, 0) < 0) { | ||
836 | sway_log_errno(SWAY_ERROR, "waitpid failed"); | 839 | sway_log_errno(SWAY_ERROR, "waitpid failed"); |
837 | return false; | 840 | return false; |
838 | } | 841 | } |
839 | 842 | ||
840 | return true; | 843 | return WIFEXITED(fork_status) && WEXITSTATUS(fork_status) == EXIT_SUCCESS; |
841 | } | 844 | } |
842 | 845 | ||
843 | bool spawn_swaybg(void) { | 846 | bool spawn_swaybg(void) { |