diff options
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 29 |
1 files changed, 18 insertions, 11 deletions
@@ -662,16 +662,11 @@ static GSList *modules_check_deps(GSList * modules) ShellModule *m; gboolean found = FALSE; - for (l = modules; l; l = l->next) { + for (l = modules; l && !found; l = l->next) { m = (ShellModule *) l->data; - gchar *name = - g_path_get_basename(g_module_name(m->dll)); - - if (g_str_equal(name, deps[i])) { - found = TRUE; - break; - } + gchar *name = g_path_get_basename(g_module_name(m->dll)); + found = g_str_equal(name, deps[i]); g_free(name); } @@ -707,7 +702,7 @@ static GSList *modules_check_deps(GSList * modules) ShellModule *mod = module_load(deps[i]); if (mod) - modules = g_slist_append(modules, mod); + modules = g_slist_prepend(modules, mod); modules = modules_check_deps(modules); /* re-check dependencies */ } else { modules = g_slist_remove(modules, module); @@ -743,7 +738,7 @@ static GSList *modules_load(gchar ** module_list) if (g_strrstr(filename, "." G_MODULE_SUFFIX) && module_in_module_list(filename, module_list) && ((module = module_load(filename)))) { - modules = g_slist_append(modules, module); + modules = g_slist_prepend(modules, module); } } @@ -1001,7 +996,6 @@ gchar *h_strdup_cprintf(const gchar * format, gchar * source, ...) retn = buffer; } - return retn; } @@ -1041,3 +1035,16 @@ gchar *h_strconcat(gchar * string1, ...) return concat; } + +static gboolean h_hash_table_remove_all_true(gpointer key, gpointer data, gpointer user_data) +{ + return TRUE; +} + +void +h_hash_table_remove_all(GHashTable *hash_table) +{ + g_hash_table_foreach_remove(hash_table, + h_hash_table_remove_all_true, + NULL); +} |