[dev] [PATCH] Reload on SIGHUP

From: Charles Lehner <cel_AT_celehner.com>
Date: Sat, 9 Jan 2016 14:18:53 -0500

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 [1] but I wasn't able to get that to work in a general way.

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

---
 surf.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
diff --git a/surf.c b/surf.c
index 70cd2c7..a672d2d 100644
--- a/surf.c
+++ b/surf.c
_AT_@ -197,6 +197,7 @@ static void scroll(GtkAdjustment *a, const Arg *arg);
 static void setatom(Client *c, int a, const char *v);
 static void setup(void);
 static void sigchld(int unused);
+static void sighup(int unused);
 static void source(Client *c, const Arg *arg);
 static void spawn(Client *c, const Arg *arg);
 static void stop(Client *c, const Arg *arg);
_AT_@ -1300,6 +1301,8 @@ 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);
 
 	dpy = GDK_DISPLAY();
_AT_@ -1395,6 +1398,16 @@ sigchld(int unused)
 }
 
 void
+sighup(int unused)
+{
+	Arg a = { .b = FALSE };
+	Client *c;
+
+	for (c = clients; c; c = c->next)
+		reload(c, &a);
+}
+
+void
 source(Client *c, const Arg *arg)
 {
 	Arg a = { .b = FALSE };
-- 
2.6.4
Received on Sat Jan 09 2016 - 20:18:53 CET

This archive was generated by hypermail 2.3.0 : Sat Jan 09 2016 - 20:24:16 CET