diff options
author | Jorge Arellano Cid <jcid@dillo.org> | 2011-07-29 20:19:08 -0400 |
---|---|---|
committer | Jorge Arellano Cid <jcid@dillo.org> | 2011-07-29 20:19:08 -0400 |
commit | b67fe8dc3de773aa251556003074ac0d721ed270 (patch) | |
tree | 7e69adfeaf14f6671a84d7e86e0840c0b9856b9e | |
parent | d4e3caf23b1639103cba50c20282cc2e647e3771 (diff) |
Added better error handling for the web search dialog (search_url)
-rw-r--r-- | src/dialog.cc | 5 | ||||
-rw-r--r-- | src/misc.c | 2 | ||||
-rw-r--r-- | src/uicmd.cc | 32 |
3 files changed, 19 insertions, 20 deletions
diff --git a/src/dialog.cc b/src/dialog.cc index 85121c63..15e5d7a9 100644 --- a/src/dialog.cc +++ b/src/dialog.cc @@ -89,7 +89,6 @@ public: if (e == FL_KEYBOARD && (Fl::event_key() == FL_Enter || Fl::event_key() == FL_Down) && (Fl::event_state() & (FL_SHIFT|FL_CTRL|FL_ALT|FL_META)) == 0) { - MSG("CustChoice: ENTER\n"); return Fl_Choice::handle(FL_PUSH); } return Fl_Choice::handle(e); @@ -164,7 +163,7 @@ const char *a_Dialog_input(const char *msg) for (int i = 0, j = 0; i < n_it; i++) { char *label, *url, *source; source = (char *)dList_nth_data(prefs.search_urls, i); - if (a_Misc_parse_search_url(source, &label, &url) < 0) + if (!source || a_Misc_parse_search_url(source, &label, &url) < 0) continue; pm[j++].label(FL_NORMAL_LABEL, strdup(label)); } @@ -191,12 +190,10 @@ const char *a_Dialog_input(const char *msg) window->show(); while (window->shown()) Fl::wait(); - _MSG("a_Dialog_input answer = %d\n", input_answer); if (input_answer == 1) { /* we have a string, save it */ dFree(input_str); input_str = dStrdup(c_inp->value()); - MSG("a_Dialog_input value() = %d\n", ch->value()); prefs.search_url_idx = ch->value(); } delete window; @@ -411,6 +411,8 @@ int a_Misc_parse_search_url(char *source, char **label, char **urlstr) } } *label = buf; + if (ret == -1) + MSG("Invalid search_url: \"%s\"\n", source); return ret; } diff --git a/src/uicmd.cc b/src/uicmd.cc index 361e42b3..993dfb0b 100644 --- a/src/uicmd.cc +++ b/src/uicmd.cc @@ -786,22 +786,22 @@ static char *UIcmd_make_search_str(const char *str) Dstr *ds = dStr_sized_new(128); /* parse search_url into label and url */ - a_Misc_parse_search_url(src, &l, &u); - - for (c = u; *c; c++) { - if (*c == '%') - switch(*++c) { - case 's': - dStr_append(ds, keys); break;; - case '%': - dStr_append_c(ds, '%'); break;; - case 0: - MSG_WARN("search_url ends with '%%'\n"); c--; break;; - default: - MSG_WARN("illegal specifier '%%%c' in search_url\n", *c); - } - else - dStr_append_c(ds, *c); + if (a_Misc_parse_search_url(src, &l, &u) == 0) { + for (c = u; *c; c++) { + if (*c == '%') + switch(*++c) { + case 's': + dStr_append(ds, keys); break;; + case '%': + dStr_append_c(ds, '%'); break;; + case 0: + MSG_WARN("search_url ends with '%%'\n"); c--; break;; + default: + MSG_WARN("illegal specifier '%%%c' in search_url\n", *c); + } + else + dStr_append_c(ds, *c); + } } dFree(keys); |