(mc_config_get_groups): optimization of function itself and usage.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
Andrew Borodin 2014-05-04 12:05:30 +04:00
parent e62906473b
commit 725997c8d0
7 changed files with 35 additions and 54 deletions

View File

@ -225,18 +225,16 @@ gboolean
mc_fhl_parse_ini_file (mc_fhl_t * fhl)
{
gchar **group_names, **orig_group_names;
gboolean ok;
mc_fhl_array_free (fhl);
fhl->filters = g_ptr_array_new ();
orig_group_names = group_names = mc_config_get_groups (fhl->config, NULL);
orig_group_names = mc_config_get_groups (fhl->config, NULL);
ok = (*orig_group_names != NULL);
if (group_names == NULL)
return FALSE;
while (*group_names)
for (group_names = orig_group_names; *group_names != NULL; group_names++)
{
if (mc_config_has_param (fhl->config, *group_names, "type"))
{
/* parse filetype filter */
@ -252,11 +250,11 @@ mc_fhl_parse_ini_file (mc_fhl_t * fhl)
/* parse extensions filter */
mc_fhl_parse_get_extensions (fhl, *group_names);
}
group_names++;
}
g_strfreev (orig_group_names);
return TRUE;
return ok;
}
/* --------------------------------------------------------------------------------------------- */

View File

@ -49,7 +49,7 @@ gboolean mc_config_save_to_file (mc_config_t * config, const gchar * filename, G
/* mcconfig/get.c: */
gchar **mc_config_get_groups (const mc_config_t *, gsize *);
gchar **mc_config_get_groups (const mc_config_t * mc_config, gsize * len);
gchar **mc_config_get_keys (const mc_config_t * mc_config, const gchar * group, gsize * len);

View File

@ -217,6 +217,7 @@ mc_config_read_file (mc_config_t * mc_config, const gchar * ini_path, gboolean r
mc_config_t *tmp_config;
gchar **groups, **curr_grp;
gchar *value;
gboolean ok;
if (mc_config == NULL)
return FALSE;
@ -226,12 +227,7 @@ mc_config_read_file (mc_config_t * mc_config, const gchar * ini_path, gboolean r
return FALSE;
groups = mc_config_get_groups (tmp_config, NULL);
if (groups == NULL)
{
mc_config_deinit (tmp_config);
return FALSE;
}
ok = (*groups != NULL);
for (curr_grp = groups; *curr_grp != NULL; curr_grp++)
{
@ -255,9 +251,11 @@ mc_config_read_file (mc_config_t * mc_config, const gchar * ini_path, gboolean r
}
g_strfreev (keys);
}
g_strfreev (groups);
mc_config_deinit (tmp_config);
return TRUE;
return ok;
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */

View File

@ -41,20 +41,18 @@
gchar **
mc_config_get_groups (const mc_config_t * mc_config, gsize * len)
{
gchar **ret;
gchar **ret = NULL;
if (!mc_config)
if (mc_config != NULL)
ret = g_key_file_get_groups (mc_config->handle, len);
if (ret == NULL)
{
ret = g_try_malloc0 (sizeof (gchar **));
if (len != NULL)
*len = 0;
return ret;
}
ret = g_key_file_get_groups (mc_config->handle, len);
if (ret == NULL)
{
ret = g_try_malloc0 (sizeof (gchar **));
}
return ret;
}

View File

@ -196,13 +196,12 @@ char *
mc_serialize_config (const mc_config_t * data, GError ** error)
{
gchar **groups, **group_iterator;
size_t group_count;
GString *buffer;
buffer = g_string_new ("");
group_iterator = groups = mc_config_get_groups (data, &group_count);
groups = mc_config_get_groups (data, NULL);
while (group_count-- != 0)
for (group_iterator = groups; *group_iterator != NULL; group_iterator++)
{
char *serialized_str;
gchar **params, **param_iterator;
@ -251,8 +250,6 @@ mc_serialize_config (const mc_config_t * data, GError ** error)
}
g_strfreev (params);
group_iterator++;
}
return g_string_free (buffer, FALSE);
}

View File

@ -279,17 +279,14 @@ mc_skin_color_check_bw_mode (mc_skin_t * mc_skin)
if (tty_use_colors () && !mc_global.tty.disable_colors)
return;
orig_groups = groups = mc_config_get_groups (mc_skin->config, NULL);
orig_groups = mc_config_get_groups (mc_skin->config, NULL);
if (groups == NULL)
return;
for (; *groups != NULL; groups++)
{
for (groups = orig_groups; *groups != NULL; groups++)
if (mc_skin_color_check_inisection (*groups))
mc_config_del_group (mc_skin->config, *groups);
}
g_strfreev (orig_groups);
mc_skin_hardcoded_blackwhite_colors (mc_skin);
}
@ -306,10 +303,10 @@ mc_skin_color_parse_ini_file (mc_skin_t * mc_skin)
mc_skin_color_check_bw_mode (mc_skin);
orig_groups = groups = mc_config_get_groups (mc_skin->config, &items_count);
if (groups == NULL || groups[0] == NULL)
orig_groups = mc_config_get_groups (mc_skin->config, &items_count);
if (*orig_groups == NULL)
{
g_strfreev (groups);
g_strfreev (orig_groups);
return FALSE;
}
@ -322,7 +319,7 @@ mc_skin_color_parse_ini_file (mc_skin_t * mc_skin)
tty_color_set_defaults (mc_skin_color->fgcolor, mc_skin_color->bgcolor, mc_skin_color->attrs);
mc_skin_color_add_to_hash (mc_skin, "core", "_default_", mc_skin_color);
for (; *groups != NULL; groups++)
for (groups = orig_groups ; *groups != NULL; groups++)
{
gchar **keys, **orig_keys;

View File

@ -514,45 +514,38 @@ setup__move_panels_config_into_separate_file (const char *profile)
return;
tmp_cfg = mc_config_init (profile, FALSE);
if (!tmp_cfg)
if (tmp_cfg == NULL)
return;
curr_grp = groups = mc_config_get_groups (tmp_cfg, NULL);
if (!groups)
groups = mc_config_get_groups (tmp_cfg, NULL);
if (*groups == NULL)
{
g_strfreev (groups);
mc_config_deinit (tmp_cfg);
return;
}
while (*curr_grp)
{
for (curr_grp = groups; *curr_grp != NULL; curr_grp++)
if (setup__is_cfg_group_must_panel_config (*curr_grp) == NULL)
mc_config_del_group (tmp_cfg, *curr_grp);
curr_grp++;
}
mc_config_save_to_file (tmp_cfg, panels_profile_name, NULL);
mc_config_deinit (tmp_cfg);
tmp_cfg = mc_config_init (profile, FALSE);
if (!tmp_cfg)
if (tmp_cfg == NULL)
{
g_strfreev (groups);
return;
}
curr_grp = groups;
while (*curr_grp)
for (curr_grp = groups; *curr_grp != NULL; curr_grp++)
{
const char *need_grp;
need_grp = setup__is_cfg_group_must_panel_config (*curr_grp);
if (need_grp != NULL)
{
mc_config_del_group (tmp_cfg, need_grp);
}
curr_grp++;
}
g_strfreev (groups);