Introduction
Introduction Statistics Contact Development Disclaimer Help
surf-0.4-searchengines.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
surf-0.4-searchengines.diff (1606B)
---
1 diff -r dbb565b8d61c surf.c
2 --- a/surf.c Fri Jun 25 09:42:58 2010 +0200
3 +++ b/surf.c Fri Aug 13 16:28:31 2010 -0400
4 @@ -55,6 +55,11 @@
5 const Arg arg;
6 } Key;
7
8 +typedef struct {
9 + char *token;
10 + char *uri;
11 +} SearchEngine;
12 +
13 static Display *dpy;
14 static Atom atoms[AtomLast];
15 static Client *clients = NULL;
16 @@ -90,6 +95,7 @@
17 static Client *newclient(void);
18 static void newwindow(Client *c, const Arg *arg);
19 static void newrequest(SoupSession *s, SoupMessage *msg, gpointer v);
20 +static gchar *parseuri(const gchar *uri);
21 static void pasteuri(GtkClipboard *clipboard, const char *text, gpointe…
22 static void print(Client *c, const Arg *arg);
23 static GdkFilterReturn processx(GdkXEvent *xevent, GdkEvent *event, gpo…
24 @@ -388,8 +394,7 @@
25
26 if(strcmp(uri, "") == 0)
27 return;
28 - u = g_strrstr(uri, "://") ? g_strdup(uri)
29 - : g_strdup_printf("http://%s", uri);
30 + u = parseuri(uri);
31 /* prevents endless loop */
32 if(c->uri && strcmp(u, c->uri) == 0) {
33 reload(c, &a);
34 @@ -562,6 +567,19 @@
35 spawn(NULL, &a);
36 }
37
38 +
39 +gchar *
40 +parseuri(const gchar *uri) {
41 + guint i;
42 + for (i = 0; i < LENGTH(searchengines); i++) {
43 + if (searchengines[i].token == NULL || searchengines[i].…
44 + continue;
45 + if (g_str_has_prefix(uri, searchengines[i].token))
46 + return g_strdup_printf(searchengines[i].uri, ur…
47 + }
48 + return g_strrstr(uri, "://") ? g_strdup(uri) : g_strdup_printf(…
49 +}
50 +
51 void
52 pasteuri(GtkClipboard *clipboard, const char *text, gpointer d) {
53 Arg arg = {.v = text };
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.