Reload on SIGHUP
authorCharles Lehner <cel@celehner.com>
Sat, 9 Jan 2016 19:18:53 +0000 (14:18 -0500)
committerQuentin Rameau <quinq@fifth.space>
Fri, 8 Jul 2016 13:02:42 +0000 (15:02 +0200)
ratiueratuie rstiure tiurest aruite rautie rautier tiue rtaruit ratiuera
This patch makes surf reload its pages when it receives a SIGHUP signal.
This makes it easier for shell scripts to trigger surf to reload.

I'm aware of using xdotool to trigger ctrl+r keypresses for reloading
but I wasn't able to get that to work in a general way. [1]

I'm sending this here in case surf maintainers and users would like to
include this in core - if not I will submit it to the wiki.

Regards,
Charles

[1] http://surf.suckless.org/files/autorefresh

Signed-off-by: Christoph Lohmann <20h@r-36.net>
surf.c

diff --git a/surf.c b/surf.c
index 7e2b2bd..29b9ede 100644 (file)
--- a/surf.c
+++ b/surf.c
@@ -145,6 +145,7 @@ static void usage(void);
 static void die(const char *errstr, ...);
 static void setup(void);
 static void sigchld(int unused);
+static void sighup(int unused);
 static char *buildfile(const char *path);
 static char *buildpath(const char *path);
 static const char *getuserhomedir(const char *user);
@@ -266,6 +267,9 @@ setup(void)
 
        /* clean up any zombies immediately */
        sigchld(0);
+       if (signal(SIGHUP, sighup) == SIG_ERR)
+               die("Can't install SIGHUP handler");
+
        gtk_init(NULL, NULL);
 
        gdpy = gdk_display_get_default();
@@ -331,6 +335,16 @@ sigchld(int unused)
                ;
 }
 
+void
+sighup(int unused)
+{
+       Arg a = { .b = 0 };
+       Client *c;
+
+       for (c = clients; c; c = c->next)
+               reload(c, &a);
+}
+
 char *
 buildfile(const char *path)
 {