Retire some dStr usage.

This commit is contained in:
2025-08-12 03:13:21 -04:00
parent d12cf52b73
commit 065edc3fd0

View File

@ -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());
}
}