diff options
author | Sebastian Geerken <devnull@localhost> | 2013-07-30 18:41:30 +0200 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2013-07-30 18:41:30 +0200 |
commit | ff6dc66d7ff225960cb52fb6df95461bcec9f0d4 (patch) | |
tree | 758f9a2e55b2c48e3ef9b4cec89dd0402209c734 /src/uicmd.cc | |
parent | 97b54265687beaddd0b588b18994c68fe770a7d5 (diff) | |
parent | 0d0e61f454008dc27d49a3b6a5f1a97f9f81297a (diff) |
Merge with main repo.
Diffstat (limited to 'src/uicmd.cc')
-rw-r--r-- | src/uicmd.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/uicmd.cc b/src/uicmd.cc index e286ee9c..84e7e4cd 100644 --- a/src/uicmd.cc +++ b/src/uicmd.cc @@ -70,6 +70,7 @@ static const char *save_dir = ""; */ static BrowserWindow *UIcmd_tab_new(CustTabs *tabs, UI *old_ui, int focus); static void close_tab_btn_cb (Fl_Widget *w, void *cb_data); +static char *UIcmd_make_search_str(const char *str); //---------------------------------------------------------------------------- @@ -649,6 +650,33 @@ void a_UIcmd_close_all_bw(void *) } /* + * Return a search string of the suffix if str starts with a + * prefix of a search engine name and a blank + */ +static char *UIcmd_find_search_str(const char *str) +{ + int p; + char *url = NULL; + int len = strcspn(str, " "); + + if (len > 0 && str[len] != '\0') { + /* we found a ' ' in str, check whether the first part of str + * is a prefix of a search_url label + */ + for (p = 0; p < dList_length(prefs.search_urls); p++) { + const char *search = + (const char *)dList_nth_data(prefs.search_urls, p); + if (strncasecmp(str, search, len) == 0) { + prefs.search_url_idx = p; + url = UIcmd_make_search_str(str + len + 1); + break; + } + } + } + return url; +} + +/* * Open a new URL in the given browser window. * * our custom "file:" URIs are normalized here too. @@ -656,10 +684,14 @@ void a_UIcmd_close_all_bw(void *) void a_UIcmd_open_urlstr(void *vbw, const char *urlstr) { char *new_urlstr; + char *search_urlstr = NULL; DilloUrl *url; int ch; BrowserWindow *bw = (BrowserWindow*)vbw; + if ((search_urlstr = UIcmd_find_search_str(urlstr))) { + urlstr = search_urlstr; + } if (urlstr && *urlstr) { /* Filter URL string */ new_urlstr = a_Url_string_strip_delimiters(urlstr); @@ -686,6 +718,7 @@ void a_UIcmd_open_urlstr(void *vbw, const char *urlstr) a_Url_free(url); } } + dFree(search_urlstr); } /* |