[PATCH] Add support for mailto links.

From: Michael Schupikov <michael.schupikov_AT_gmx.net>
Date: Sun, 18 Jan 2015 15:01:28 +0100

---
 config.def.h |  8 ++++++++
 surf.c       | 18 ++++++++++++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/config.def.h b/config.def.h
index 6718a81..55883d7 100644
--- a/config.def.h
+++ b/config.def.h
_AT_@ -53,6 +53,14 @@ static Bool allowgeolocation      = TRUE;
 	} \
 }
 
+/* MAIL(recipient) */
+#define MAIL(t) { \
+    .v = (char *[]){ "/bin/sh", "-c", \
+        "urxvt -e /bin/sh -c \"mutt \"$0\";\"", \
+        t, NULL \
+    } \
+}
+
 /* styles */
 static SiteStyle styles[] = {
 	/* regexp		file in $styledir */
diff --git a/surf.c b/surf.c
index a229994..97ad67b 100644
--- a/surf.c
+++ b/surf.c
_AT_@ -95,7 +95,7 @@ static SoupCache *diskcache = NULL;
 static void addaccelgroup(Client *c);
 static void beforerequest(WebKitWebView *w, WebKitWebFrame *f,
 		WebKitWebResource *r, WebKitNetworkRequest *req,
-		WebKitNetworkResponse *resp, gpointer d);
+		WebKitNetworkResponse *resp, Client *c);
 static char *buildpath(const char *path);
 static gboolean buttonrelease(WebKitWebView *web, GdkEventButton *e,
 		GList *gl);
_AT_@ -137,6 +137,7 @@ static void gettogglestat(Client *c);
 static void getpagestat(Client *c);
 static char *geturi(Client *c);
 static gchar *getstyle(const char *uri);
+static void handle_mailto(Client *c, WebKitWebView *w, const gchar *uri);
 
 static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c);
 
_AT_@ -209,11 +210,15 @@ addaccelgroup(Client *c) {
 static void
 beforerequest(WebKitWebView *w, WebKitWebFrame *f, WebKitWebResource *r,
 		WebKitNetworkRequest *req, WebKitNetworkResponse *resp,
-		gpointer d) {
+		Client *c) {
 	const gchar *uri = webkit_network_request_get_uri(req);
 
 	if(g_str_has_suffix(uri, "/favicon.ico"))
 		webkit_network_request_set_uri(req, "about:blank");
+
+  if(g_str_has_prefix(uri, "mailto:")) {
+    handle_mailto(c, w, uri);
+  }
 }
 
 static char *
_AT_@ -1450,6 +1455,15 @@ updatewinid(Client *c) {
 }
 
 static void
+handle_mailto(Client *c, WebKitWebView *w, const gchar *uri) {
+  Arg arg;
+
+  webkit_web_view_stop_loading(w);
+  arg = (Arg)MAIL((char*)uri);
+  spawn(c, &arg);
+}
+
+static void
 usage(void) {
 	die("usage: %s [-bBfFgGiIkKnNpPsSvx]"
 		" [-a cookiepolicies ] "
-- 
1.9.1
--bg08WKrSYDhXBjb5--
Received on Mon Sep 17 2001 - 00:00:00 CEST

This archive was generated by hypermail 2.3.0 : Mon Jan 19 2015 - 19:24:07 CET