(mc_g_string_dup): new API that extends GString one.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
Andrew Borodin 2021-02-28 18:31:30 +03:00
parent 6f859e52d0
commit d88f439a69
11 changed files with 38 additions and 14 deletions

View File

@ -186,3 +186,25 @@ mc_g_string_copy (GString * dest, const GString * src)
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */
/**
* mc_g_string_dup:
* @s: (nullable): the source #GString
* @return: @copy of @s
*
* Copies the bytes from one #GString to another.
*
* There is no such API in GLib2.
*/
GString *
mc_g_string_dup (const GString * s)
{
GString *ret = NULL;
if (s != NULL)
ret = g_string_new_len (s->str, s->len);
return ret;
}
/* --------------------------------------------------------------------------------------------- */

View File

@ -27,6 +27,9 @@ void g_queue_clear_full (GQueue * queue, GDestroyNotify free_func);
/* There is no such API in GLib2 */ /* There is no such API in GLib2 */
GString *mc_g_string_copy (GString * dest, const GString * src); GString *mc_g_string_copy (GString * dest, const GString * src);
/* There is no such API in GLib2 */
GString *mc_g_string_dup (const GString * s);
/*** inline functions ****************************************************************************/ /*** inline functions ****************************************************************************/
#endif /* MC_GLIBCOMPAT_H */ #endif /* MC_GLIBCOMPAT_H */

View File

@ -222,7 +222,8 @@ GString *
mc_search_hex_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str) mc_search_hex_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str)
{ {
(void) lc_mc_search; (void) lc_mc_search;
return g_string_new_len (replace_str->str, replace_str->len);
return mc_g_string_dup (replace_str);
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */

View File

@ -109,5 +109,6 @@ GString *
mc_search_normal_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str) mc_search_normal_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str)
{ {
(void) lc_mc_search; (void) lc_mc_search;
return g_string_new_len (replace_str->str, replace_str->len);
return mc_g_string_dup (replace_str);
} }

View File

@ -1006,7 +1006,7 @@ mc_search_regex_prepare_replace_str (mc_search_t * lc_mc_search, GString * repla
mc_search_regex__get_max_num_of_replace_tokens (replace_str->str, replace_str->len); mc_search_regex__get_max_num_of_replace_tokens (replace_str->str, replace_str->len);
if (lc_mc_search->num_results < 0) if (lc_mc_search->num_results < 0)
return g_string_new_len (replace_str->str, replace_str->len); return mc_g_string_dup (replace_str);
if (num_replace_tokens > lc_mc_search->num_results - 1 if (num_replace_tokens > lc_mc_search->num_results - 1
|| num_replace_tokens > MC_SEARCH__NUM_REPLACE_ARGS) || num_replace_tokens > MC_SEARCH__NUM_REPLACE_ARGS)

View File

@ -363,7 +363,7 @@ mc_search_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str
return g_string_new (""); return g_string_new ("");
if (lc_mc_search == NULL) if (lc_mc_search == NULL)
return g_string_new_len (replace_str->str, replace_str->len); return mc_g_string_dup (replace_str);
switch (lc_mc_search->search_type) switch (lc_mc_search->search_type)
{ {
@ -380,7 +380,7 @@ mc_search_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str
ret = mc_search_hex_prepare_replace_str (lc_mc_search, replace_str); ret = mc_search_hex_prepare_replace_str (lc_mc_search, replace_str);
break; break;
default: default:
ret = g_string_new_len (replace_str->str, replace_str->len); ret = mc_g_string_dup (replace_str);
break; break;
} }
return ret; return ret;

View File

@ -725,7 +725,7 @@ dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort,
fentry = &list->list[i]; fentry = &list->list[i];
dfentry = &dir_copy.list[i]; dfentry = &dir_copy.list[i];
dfentry->fname = g_string_new_len (fentry->fname->str, fentry->fname->len); dfentry->fname = mc_g_string_dup (fentry->fname);
dfentry->f.marked = fentry->f.marked; dfentry->f.marked = fentry->f.marked;
dfentry->f.dir_size_computed = fentry->f.dir_size_computed; dfentry->f.dir_size_computed = fentry->f.dir_size_computed;
dfentry->f.link_to_dir = fentry->f.link_to_dir; dfentry->f.link_to_dir = fentry->f.link_to_dir;

View File

@ -1857,8 +1857,7 @@ do_find (WPanel * panel, const char *start_dir, ssize_t start_dir_len, const cha
continue; continue;
} }
list->list[list->len].fname = g_string_new_len (list->list[list->len].fname->str, list->list[list->len].fname = mc_g_string_dup (list->list[list->len].fname);
list->list[list->len].fname->len);
list->list[list->len].f.marked = 0; list->list[list->len].f.marked = 0;
list->list[list->len].f.link_to_dir = link_to_dir ? 1 : 0; list->list[list->len].f.link_to_dir = link_to_dir ? 1 : 0;
list->list[list->len].f.stale_link = stale_link ? 1 : 0; list->list[list->len].f.stale_link = stale_link ? 1 : 0;

View File

@ -2273,7 +2273,7 @@ goto_parent_dir (WPanel * panel)
vfs_path_t *dname_vpath; vfs_path_t *dname_vpath;
if (g_path_is_absolute (fname->str)) if (g_path_is_absolute (fname->str))
fname = g_string_new_len (fname->str, fname->len); fname = mc_g_string_dup (fname);
else else
{ {
char *fname2; char *fname2;

View File

@ -461,8 +461,7 @@ do_panelize_cd (WPanel * panel)
for (i = 0; i < panelized_panel.list.len; i++) for (i = 0; i < panelized_panel.list.len; i++)
{ {
if (panelized_same || DIR_IS_DOTDOT (panelized_panel.list.list[i].fname->str)) if (panelized_same || DIR_IS_DOTDOT (panelized_panel.list.list[i].fname->str))
list->list[i].fname = g_string_new_len (panelized_panel.list.list[i].fname->str, list->list[i].fname = mc_g_string_dup (panelized_panel.list.list[i].fname);
panelized_panel.list.list[i].fname->len);
else else
{ {
vfs_path_t *tmp_vpath; vfs_path_t *tmp_vpath;
@ -523,8 +522,7 @@ panelize_save_panel (WPanel * panel)
for (i = 0; i < panel->dir.len; i++) for (i = 0; i < panel->dir.len; i++)
{ {
panelized_panel.list.list[i].fname = panelized_panel.list.list[i].fname = mc_g_string_dup (list->list[i].fname);
g_string_new_len (list->list[i].fname->str, list->list[i].fname->len);
panelized_panel.list.list[i].f.link_to_dir = list->list[i].f.link_to_dir; panelized_panel.list.list[i].f.link_to_dir = list->list[i].f.link_to_dir;
panelized_panel.list.list[i].f.stale_link = list->list[i].f.stale_link; panelized_panel.list.list[i].f.stale_link = list->list[i].f.stale_link;
panelized_panel.list.list[i].f.dir_size_computed = list->list[i].f.dir_size_computed; panelized_panel.list.list[i].f.dir_size_computed = list->list[i].f.dir_size_computed;

View File

@ -115,7 +115,7 @@ editcmd_dialog_completion_show (const WEdit * edit, GQueue * compl, int max_widt
GString *s = (GString *) i->data; GString *s = (GString *) i->data;
g_queue_push_tail (editcmd_dialog_completion_show__compl, g_queue_push_tail (editcmd_dialog_completion_show__compl,
g_string_new_len (s->str, s->len)); mc_g_string_dup (s));
} }
} }