Retire some dStr usage.
This commit is contained in:
31
src/uicmd.cc
31
src/uicmd.cc
@ -87,7 +87,7 @@ static struct Tabgroup *tabgroups = NULL;
|
||||
*/
|
||||
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);
|
||||
static std::string UIcmd_make_search_str(const char *str);
|
||||
static void UIcmd_set_window_labels(Fl_Window *win, const char *str);
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@ -731,10 +731,10 @@ void a_UIcmd::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)
|
||||
static std::optional< std::string > UIcmd_find_search_str(const char *str)
|
||||
{
|
||||
int p;
|
||||
char *url = NULL;
|
||||
std::optional< std::string > url;
|
||||
int len = strcspn(str, " ");
|
||||
|
||||
if (len > 0 && str[len] != '\0') {
|
||||
@ -762,12 +762,12 @@ static char *UIcmd_find_search_str(const char *str)
|
||||
void a_UIcmd::a_UIcmd_open_urlstr(BrowserWindow *bw, const char *urlstr)
|
||||
{
|
||||
char *new_urlstr;
|
||||
char *search_urlstr = NULL;
|
||||
std::optional< std::string > search_urlstr;
|
||||
std::unique_ptr< DilloUrl > url;
|
||||
int ch;
|
||||
|
||||
if ((search_urlstr = UIcmd_find_search_str(urlstr))) {
|
||||
urlstr = search_urlstr;
|
||||
urlstr = search_urlstr.value().c_str();
|
||||
}
|
||||
if (urlstr && *urlstr) {
|
||||
/* Filter URL string */
|
||||
@ -792,7 +792,6 @@ void a_UIcmd::a_UIcmd_open_urlstr(BrowserWindow *bw, const char *urlstr)
|
||||
a_UIcmd_open_url(bw, url.release());
|
||||
}
|
||||
}
|
||||
dFree(search_urlstr);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1164,12 +1163,13 @@ void a_UIcmd::a_UIcmd_open_file(void *vbw)
|
||||
* a string of keywords (separated by blanks) and the current search_url.
|
||||
* The search string is urlencoded.
|
||||
*/
|
||||
static char *UIcmd_make_search_str(const char *str)
|
||||
static std::string
|
||||
UIcmd_make_search_str(const char *str)
|
||||
{
|
||||
char *search_url, *l, *u, *c;
|
||||
char *l, *u, *c;
|
||||
char *keys = a_Url_encode_hex_str(str),
|
||||
*src = (char*)dList_nth_data(prefs.search_urls, prefs.search_url_idx);
|
||||
Dstr *ds = dStr_sized_new(128);
|
||||
std::string search_url;
|
||||
|
||||
/* parse search_url into label and url */
|
||||
if (a_Misc_parse_search_url(src, &l, &u) == 0) {
|
||||
@ -1177,22 +1177,20 @@ static char *UIcmd_make_search_str(const char *str)
|
||||
if (*c == '%')
|
||||
switch(*++c) {
|
||||
case 's':
|
||||
dStr_append(ds, keys); break;
|
||||
search_url+= keys; break;
|
||||
case '%':
|
||||
dStr_append_c(ds, '%'); break;
|
||||
search_url+= '%'; 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);
|
||||
search_url+= *c;
|
||||
}
|
||||
}
|
||||
dFree(keys);
|
||||
|
||||
search_url = ds->str;
|
||||
dStr_free(ds, 0);
|
||||
return search_url;
|
||||
}
|
||||
|
||||
@ -1204,9 +1202,8 @@ void a_UIcmd::a_UIcmd_search_dialog(BrowserWindow *bw)
|
||||
const char *query;
|
||||
|
||||
if ((query = a_Dialog_input("Flenser: Search", "Search the Web:"))) {
|
||||
char *url_str = UIcmd_make_search_str(query);
|
||||
a_UIcmd_open_urlstr(bw, url_str);
|
||||
dFree(url_str);
|
||||
auto url_str = UIcmd_make_search_str(query);
|
||||
a_UIcmd_open_urlstr(bw, url_str.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user