diff -r ba69af3ca2c3 config.def.h --- a/config.def.h Sat Oct 17 09:23:28 2009 +0200 +++ b/config.def.h Mon Oct 19 12:23:10 2009 +0200 @@ -35,6 +35,10 @@ { 0, GDK_Return, hideuri, { 0 }, UriBar }, }; +static SearchEngine searchengines[] = { + { NULL, NULL }, +}; + static Item items[] = { { "New Window", newwindow, { .v = NULL } }, { "Reload", reload, { .b = FALSE } }, diff -r ba69af3ca2c3 surf.c --- a/surf.c Sat Oct 17 09:23:28 2009 +0200 +++ b/surf.c Mon Oct 19 12:23:10 2009 +0200 @@ -60,6 +60,11 @@ KeyFocus focus; } Key; +typedef struct { + char *token; + char *uri; +} SearchEngine; + static Display *dpy; static Atom uriprop; static SoupCookieJar *cookiejar; @@ -100,6 +105,7 @@ static void newwindow(Client *c, const Arg *arg); static WebKitWebView *createwindow(WebKitWebView *v, WebKitWebFrame *f, Client *c); static void pasteuri(GtkClipboard *clipboard, const char *text, gpointer d); +static gchar *geturl(const gchar *uri); static GdkFilterReturn processx(GdkXEvent *xevent, GdkEvent *event, gpointer d); static void print(Client *c, const Arg *arg); static void progresschange(WebKitWebView *v, gint p, Client *c); @@ -408,6 +414,19 @@ update(c); } +gchar * +geturl(const gchar *uri) { + guint i; + for (i = 0; i < LENGTH(searchengines); i++) { + if (searchengines[i].token == NULL || searchengines[i].uri == NULL || *(uri + strlen(searchengines[i].token)) != ' ') + continue; + if(g_str_has_prefix(uri, searchengines[i].token)) + return g_strdup_printf(searchengines[i].uri, uri + strlen(searchengines[i].token) + 1); + } + return g_strrstr(uri, "://") ? g_strdup(uri) : g_strdup_printf("http://%s", uri); +} + + void loaduri(Client *c, const Arg *arg) { char *u; @@ -417,8 +436,7 @@ uri = autouri(c); if(!uri) return; - u = g_strrstr(uri, "://") ? g_strdup(uri) - : g_strdup_printf("http://%s", uri); + u = geturl(uri); webkit_web_view_load_uri(c->view, u); c->progress = 0; c->title = copystr(&c->title, u);