sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

surf-git-20170323-webkit2-searchengines.diff (1520B)


      1 diff --git a/surf.c b/surf.c
      2 index 93a1629..eb2af97 100644
      3 --- a/surf.c
      4 +++ b/surf.c
      5 @@ -129,6 +129,11 @@ typedef struct {
      6  } Button;
      7  
      8  typedef struct {
      9 +	char *token;
     10 +	char *uri;
     11 +} SearchEngine;
     12 +
     13 +typedef struct {
     14  	const char *uri;
     15  	Parameter config[ParameterLast];
     16  	regex_t re;
     17 @@ -202,6 +207,7 @@ static void responsereceived(WebKitDownload *d, GParamSpec *ps, Client *c);
     18  static void download(Client *c, WebKitURIResponse *r);
     19  static void closeview(WebKitWebView *v, Client *c);
     20  static void destroywin(GtkWidget* w, Client *c);
     21 +static gchar *parseuri(const gchar *uri);
     22  
     23  /* Hotkeys */
     24  static void pasteuri(GtkClipboard *clipboard, const char *text, gpointer d);
     25 @@ -477,7 +483,7 @@ loaduri(Client *c, const Arg *a)
     26  		url = g_strdup_printf("file://%s", path);
     27  		free(path);
     28  	} else {
     29 -		url = g_strdup_printf("http://%s", uri);
     30 +		url = parseuri(uri);
     31  	}
     32  
     33  	setatom(c, AtomUri, url);
     34 @@ -1461,6 +1467,22 @@ destroywin(GtkWidget* w, Client *c)
     35  		gtk_main_quit();
     36  }
     37  
     38 +gchar *
     39 +parseuri(const gchar *uri) {
     40 +	guint i;
     41 +
     42 +	for (i = 0; i < LENGTH(searchengines); i++) {
     43 +		if (searchengines[i].token == NULL || searchengines[i].uri == NULL ||
     44 +		    *(uri + strlen(searchengines[i].token)) != ' ')
     45 +			continue;
     46 +		if (g_str_has_prefix(uri, searchengines[i].token))
     47 +			return g_strdup_printf(searchengines[i].uri,
     48 +					       uri + strlen(searchengines[i].token) + 1);
     49 +	}
     50 +
     51 +	return g_strdup_printf("http://%s", uri);
     52 +}
     53 +
     54  void
     55  pasteuri(GtkClipboard *clipboard, const char *text, gpointer d)
     56  {