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 BrowserWindow *UIcmd_tab_new(CustTabs *tabs, UI *old_ui, int focus);
static void close_tab_btn_cb (Fl_Widget *w, void *cb_data); 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); 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 * Return a search string of the suffix if str starts with a
* prefix of a search engine name and a blank * 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; int p;
char *url = NULL; std::optional< std::string > url;
int len = strcspn(str, " "); int len = strcspn(str, " ");
if (len > 0 && str[len] != '\0') { 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) void a_UIcmd::a_UIcmd_open_urlstr(BrowserWindow *bw, const char *urlstr)
{ {
char *new_urlstr; char *new_urlstr;
char *search_urlstr = NULL; std::optional< std::string > search_urlstr;
std::unique_ptr< DilloUrl > url; std::unique_ptr< DilloUrl > url;
int ch; int ch;
if ((search_urlstr = UIcmd_find_search_str(urlstr))) { if ((search_urlstr = UIcmd_find_search_str(urlstr))) {
urlstr = search_urlstr; urlstr = search_urlstr.value().c_str();
} }
if (urlstr && *urlstr) { if (urlstr && *urlstr) {
/* Filter URL string */ /* 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()); 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. * a string of keywords (separated by blanks) and the current search_url.
* The search string is urlencoded. * 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), char *keys = a_Url_encode_hex_str(str),
*src = (char*)dList_nth_data(prefs.search_urls, prefs.search_url_idx); *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 */ /* parse search_url into label and url */
if (a_Misc_parse_search_url(src, &l, &u) == 0) { 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 == '%') if (*c == '%')
switch(*++c) { switch(*++c) {
case 's': case 's':
dStr_append(ds, keys); break; search_url+= keys; break;
case '%': case '%':
dStr_append_c(ds, '%'); break; search_url+= '%'; break;
case 0: case 0:
MSG_WARN("search_url ends with '%%'\n"); c--; break; MSG_WARN("search_url ends with '%%'\n"); c--; break;
default: default:
MSG_WARN("illegal specifier '%%%c' in search_url\n", *c); MSG_WARN("illegal specifier '%%%c' in search_url\n", *c);
} }
else else
dStr_append_c(ds, *c); search_url+= *c;
} }
} }
dFree(keys); dFree(keys);
search_url = ds->str;
dStr_free(ds, 0);
return search_url; return search_url;
} }
@ -1204,9 +1202,8 @@ void a_UIcmd::a_UIcmd_search_dialog(BrowserWindow *bw)
const char *query; const char *query;
if ((query = a_Dialog_input("Flenser: Search", "Search the Web:"))) { if ((query = a_Dialog_input("Flenser: Search", "Search the Web:"))) {
char *url_str = UIcmd_make_search_str(query); auto url_str = UIcmd_make_search_str(query);
a_UIcmd_open_urlstr(bw, url_str); a_UIcmd_open_urlstr(bw, url_str.c_str());
dFree(url_str);
} }
} }