surf-externalpipe-signal-2.0.diff (1772B)
1 From 84a41d036329c7599024b7cb0f613400d7484cec Mon Sep 17 00:00:00 2001 2 From: Miles Alan <m@milesalan.com> 3 Date: Sun, 11 Aug 2019 21:36:58 -0500 4 Subject: [PATCH] Add handler for SIGUSR1 signal to run an externalpipe command 5 6 --- 7 config.def.h | 1 + 8 surf.c | 16 ++++++++++++++++ 9 2 files changed, 17 insertions(+) 10 11 diff --git a/config.def.h b/config.def.h 12 index 6d3135e..a7363d9 100644 13 --- a/config.def.h 14 +++ b/config.def.h 15 @@ -5,6 +5,7 @@ static char *scriptfile = "~/.surf/script.js"; 16 static char *styledir = "~/.surf/styles/"; 17 static char *cachedir = "~/.surf/cache/"; 18 static char *cookiefile = "~/.surf/cookies.txt"; 19 +static char *externalpipe_sigusr1[] = {"/bin/sh", "-c", "externalpipe_buffer.sh surf_strings_read"}; 20 21 /* Webkit default features */ 22 static Parameter defconfig[ParameterLast] = { 23 diff --git a/surf.c b/surf.c 24 index 93a1629..0e402ca 100644 25 --- a/surf.c 26 +++ b/surf.c 27 @@ -146,6 +146,7 @@ static void die(const char *errstr, ...); 28 static void setup(void); 29 static void sigchld(int unused); 30 static void sighup(int unused); 31 +static void sigusr1(int unused); 32 static char *buildfile(const char *path); 33 static char *buildpath(const char *path); 34 static const char *getuserhomedir(const char *user); 35 @@ -338,6 +339,15 @@ sigchld(int unused) 36 ; 37 } 38 39 +void 40 +sigusr1(int unused) 41 +{ 42 + static Arg a = {.v = externalpipe_sigusr1}; 43 + Client *c; 44 + for (c = clients; c; c = c->next) 45 + externalpipe(c, &a); 46 +} 47 + 48 void 49 sighup(int unused) 50 { 51 @@ -1757,6 +1767,12 @@ main(int argc, char *argv[]) 52 c = newclient(NULL); 53 showview(NULL, c); 54 55 + struct sigaction sa; 56 + sa.sa_handler = sigusr1; 57 + sigemptyset(&sa.sa_mask); 58 + sa.sa_flags = SA_RESTART; 59 + sigaction(SIGUSR1, &sa, NULL); 60 + 61 loaduri(c, &arg); 62 updatetitle(c); 63 64 -- 65 2.19.2 66