diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2020-06-11 01:29:07 +0100 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2020-06-11 01:29:07 +0100 |
| commit | 20ed7fc4a211ce16b6cf69b2d4379bbdb75c562d (patch) | |
| tree | 3cfe6163f09beb36adbf6c84e371c43ecec6a577 /swaybar/status_line.c | |
| parent | a2aec25af768c0c10689586f720d2f983ec409e1 (diff) | |
swaybar: ensure correct init order for status_line
`$WAYLAND_SOCKET` is unset by `wl_display_connect` after it has
successfully connected to the wayland socket.
However, subprocesses spawned by swaybar (status-command) don't have
access to waybar's fds as $WAYLAND_SOCKET is O_CLOEXEC. This means any
status command which itself tries to connect to wayland will fail if
this environment variable is set.
Reorder display and status-command initialization so that this variable
is not set and add an assert so we can enforce this invariant in future.
Diffstat (limited to 'swaybar/status_line.c')
| -rw-r--r-- | swaybar/status_line.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/swaybar/status_line.c b/swaybar/status_line.c index fb9271f8..71ceb1d0 100644 --- a/swaybar/status_line.c +++ b/swaybar/status_line.c @@ -1,4 +1,5 @@ #define _POSIX_C_SOURCE 200809L +#include <assert.h> #include <fcntl.h> #include <sys/ioctl.h> #include <json.h> @@ -153,6 +154,8 @@ struct status_line *status_line_init(char *cmd) { exit(1); } + assert(!getenv("WAYLAND_SOCKET") && "display must be initialized before " + " starting `status-command`; WAYLAND_SOCKET should not be set"); status->pid = fork(); if (status->pid == 0) { dup2(pipe_read_fd[1], STDOUT_FILENO); |
