aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/log.c2
-rw-r--r--include/sway.h2
-rw-r--r--sway/commands.c2
-rw-r--r--sway/main.c18
-rw-r--r--swaybar/main.c4
-rw-r--r--swaybg/main.c4
-rw-r--r--swaygrab/main.c4
-rw-r--r--swaylock/main.c4
-rw-r--r--swaymsg/main.c4
9 files changed, 24 insertions, 20 deletions
diff --git a/common/log.c b/common/log.c
index adba0021..6d958db2 100644
--- a/common/log.c
+++ b/common/log.c
@@ -58,7 +58,7 @@ void sway_abort(const char *format, ...) {
vfprintf(stderr, format, args);
va_end(args);
fprintf(stderr, "\n");
- sway_terminate();
+ sway_terminate(EXIT_FAILURE);
}
#ifndef NDEBUG
diff --git a/include/sway.h b/include/sway.h
index 6499c81d..b5cfb668 100644
--- a/include/sway.h
+++ b/include/sway.h
@@ -1,6 +1,6 @@
#ifndef _SWAY_SWAY_H
#define _SWAY_SWAY_H
-void sway_terminate(void);
+void sway_terminate(int exit_code);
#endif
diff --git a/sway/commands.c b/sway/commands.c
index 055473d5..c4b7f6ab 100644
--- a/sway/commands.c
+++ b/sway/commands.c
@@ -450,7 +450,7 @@ static struct cmd_results *cmd_exit(int argc, char **argv) {
}
// Close all views
close_views(&root_container);
- sway_terminate();
+ sway_terminate(EXIT_SUCCESS);
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
}
diff --git a/sway/main.c b/sway/main.c
index 6adbf89d..7ea392b6 100644
--- a/sway/main.c
+++ b/sway/main.c
@@ -21,16 +21,17 @@
#include "sway.h"
static bool terminate_request = false;
+static int exit_value = 0;
-void sway_terminate(void) {
+void sway_terminate(int exit_code) {
terminate_request = true;
+ exit_value = exit_code;
wlc_terminate();
- exit(EXIT_FAILURE);
}
void sig_handler(int signal) {
close_views(&root_container);
- sway_terminate();
+ sway_terminate(EXIT_SUCCESS);
}
static void wlc_log_handler(enum wlc_log_type type, const char *str) {
@@ -150,16 +151,19 @@ int main(int argc, char **argv) {
if (optind < argc) { // Behave as IPC client
if(optind != 1) {
- sway_abort("Don't use options with the IPC client");
+ sway_log(L_ERROR, "Don't use options with the IPC client");
+ exit(EXIT_FAILURE);
}
if (getuid() != geteuid() || getgid() != getegid()) {
if (setgid(getgid()) != 0 || setuid(getuid()) != 0) {
- sway_abort("Unable to drop root");
+ sway_log(L_ERROR, "Unable to drop root");
+ exit(EXIT_FAILURE);
}
}
char *socket_path = getenv("SWAYSOCK");
if (!socket_path) {
- sway_abort("Unable to retrieve socket path");
+ sway_log(L_ERROR, "Unable to retrieve socket path");
+ exit(EXIT_FAILURE);
}
char *command = join_args(argv + optind, argc - optind);
run_as_ipc_client(command, socket_path);
@@ -224,6 +228,6 @@ int main(int argc, char **argv) {
ipc_terminate();
- return 0;
+ return exit_value;
}
diff --git a/swaybar/main.c b/swaybar/main.c
index 737ee647..c6bbc7a5 100644
--- a/swaybar/main.c
+++ b/swaybar/main.c
@@ -10,9 +10,9 @@
/* global bar state */
struct bar swaybar;
-void sway_terminate(void) {
+void sway_terminate(int exit_code) {
bar_teardown(&swaybar);
- exit(EXIT_FAILURE);
+ exit(exit_code);
}
void sig_handler(int signal) {
diff --git a/swaybg/main.c b/swaybg/main.c
index b936be2b..fbd0d16b 100644
--- a/swaybg/main.c
+++ b/swaybg/main.c
@@ -21,7 +21,7 @@ enum scaling_mode {
SCALING_MODE_TILE,
};
-void sway_terminate(void) {
+void sway_terminate(int exit_code) {
int i;
for (i = 0; i < surfaces->length; ++i) {
struct window *window = surfaces->items[i];
@@ -29,7 +29,7 @@ void sway_terminate(void) {
}
list_free(surfaces);
registry_teardown(registry);
- exit(EXIT_FAILURE);
+ exit(exit_code);
}
int main(int argc, const char **argv) {
diff --git a/swaygrab/main.c b/swaygrab/main.c
index 82d623e7..6ba8fb3e 100644
--- a/swaygrab/main.c
+++ b/swaygrab/main.c
@@ -11,8 +11,8 @@
#include "ipc-client.h"
#include "util.h"
-void sway_terminate(void) {
- exit(EXIT_FAILURE);
+void sway_terminate(int exit_code) {
+ exit(exit_code);
}
void grab_and_apply_magick(const char *file, const char *output,
diff --git a/swaylock/main.c b/swaylock/main.c
index 9b14086d..b20883af 100644
--- a/swaylock/main.c
+++ b/swaylock/main.c
@@ -24,7 +24,7 @@ enum scaling_mode {
SCALING_MODE_TILE,
};
-void sway_terminate(void) {
+void sway_terminate(int exit_code) {
int i;
for (i = 0; i < surfaces->length; ++i) {
struct window *window = surfaces->items[i];
@@ -32,7 +32,7 @@ void sway_terminate(void) {
}
list_free(surfaces);
registry_teardown(registry);
- exit(EXIT_FAILURE);
+ exit(exit_code);
}
char *password;
diff --git a/swaymsg/main.c b/swaymsg/main.c
index 22572b6f..88a8fab0 100644
--- a/swaymsg/main.c
+++ b/swaymsg/main.c
@@ -11,8 +11,8 @@
#include "readline.h"
#include "log.h"
-void sway_terminate(void) {
- exit(EXIT_FAILURE);
+void sway_terminate(int exit_code) {
+ exit(exit_code);
}
int main(int argc, char **argv) {