From c27f876634780243484ea046efe923c890d202ec Mon Sep 17 00:00:00 2001 From: Zach DeCook Date: Wed, 26 Jan 2022 12:03:58 -0500 Subject: [PATCH] main: prevent crash on sigpipe This is commonly caused by a bad program in the output chain, e.g. wvkbd -O | false --- main.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/main.c b/main.c index 528e69d..429dcfe 100644 --- a/main.c +++ b/main.c @@ -398,6 +398,11 @@ show(int sigint) { drwsurf_flip(&draw_surf); } +void +pipewarn(int sigint) { + fprintf(stderr, "wvkbd: cannot pipe data out.\n"); +} + int main(int argc, char **argv) { /* parse command line arguments */ @@ -530,6 +535,7 @@ main(int argc, char **argv) { signal(SIGUSR1, hide); signal(SIGUSR2, show); + signal(SIGPIPE, pipewarn); while (run_display) { while (wl_display_dispatch(display) != -1 && layer_surface) {