Add plumbing functionality.
This commit is contained in:
		
							parent
							
								
									7c34d5061e
								
							
						
					
					
						commit
						9c3b5ad353
					
				| 
						 | 
				
			
			@ -53,6 +53,13 @@ static Bool allowgeolocation      = TRUE;
 | 
			
		|||
	} \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* PLUMB(URI) */
 | 
			
		||||
#define PLUMB(u) {\
 | 
			
		||||
	.v = (char *[]){ "/bin/sh", "-c", \
 | 
			
		||||
		"xdg-open \"$0\"", u, NULL \
 | 
			
		||||
	} \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* styles */
 | 
			
		||||
/*
 | 
			
		||||
 * The iteration will stop at the first match, beginning at the beginning of
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										23
									
								
								surf.c
								
								
								
								
							
							
						
						
									
										23
									
								
								surf.c
								
								
								
								
							| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			@ -138,6 +138,8 @@ static void getpagestat(Client *c);
 | 
			
		|||
static char *geturi(Client *c);
 | 
			
		||||
static gchar *getstyle(const char *uri);
 | 
			
		||||
 | 
			
		||||
static void handleplumb(Client *c, WebKitWebView *w, const gchar *uri);
 | 
			
		||||
 | 
			
		||||
static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c);
 | 
			
		||||
 | 
			
		||||
static void inspector(Client *c, const Arg *arg);
 | 
			
		||||
| 
						 | 
				
			
			@ -209,11 +211,19 @@ 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, "http://") \
 | 
			
		||||
			&& !g_str_has_prefix(uri, "https://") \
 | 
			
		||||
			&& !g_str_has_prefix(uri, "about:") \
 | 
			
		||||
			&& strlen(uri) > 0) {
 | 
			
		||||
		printf("Handle plumb: %s\n", uri);
 | 
			
		||||
		handleplumb(c, w, uri);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static char *
 | 
			
		||||
| 
						 | 
				
			
			@ -561,6 +571,15 @@ getstyle(const char *uri) {
 | 
			
		|||
	return g_strdup("");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
handleplumb(Client *c, WebKitWebView *w, const gchar *uri) {
 | 
			
		||||
	Arg arg;
 | 
			
		||||
 | 
			
		||||
	webkit_web_view_stop_loading(w);
 | 
			
		||||
	arg = (Arg)PLUMB((char *)uri);
 | 
			
		||||
	spawn(c, &arg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
initdownload(WebKitWebView *view, WebKitDownload *o, Client *c) {
 | 
			
		||||
	Arg arg;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue