File fix_module_loading_order.patch of Package hardinfo
--- ./hardinfo/util.c.orig 2023-05-25 04:08:06.000000000 +0900
+++ ./hardinfo/util.c 2024-05-23 23:45:50.585476134 +0900
@@ -963,15 +963,28 @@
g_free(filename);
if (dir) {
- while ((filename = (gchar *) g_dir_read_name(dir))) {
- if (g_strrstr(filename, "." G_MODULE_SUFFIX) &&
- module_in_module_list(filename, module_list) &&
- ((module = module_load(filename)))) {
- modules = g_slist_prepend(modules, module);
- }
- }
+ GList *filenames = NULL;
+ while ((filename = (gchar *)g_dir_read_name(dir))) {
+ if (g_strrstr(filename, "." G_MODULE_SUFFIX) &&
+ module_in_module_list(filename, module_list)) {
+ if (g_strrstr(filename, "devices." G_MODULE_SUFFIX)) {
+ filenames = g_list_prepend(filenames, filename);
+ }
+ else {
+ filenames = g_list_append(filenames, filename);
+ }
+ }
+ }
- g_dir_close(dir);
+ GList* item = NULL;
+ while (item = g_list_first(filenames)) {
+ if (module = module_load((gchar *)item->data)) {
+ modules = g_slist_prepend(modules, module);
+ }
+ filenames = g_list_delete_link(filenames, item);
+ }
+ g_list_free_full (g_steal_pointer (&filenames), g_object_unref);
+ g_dir_close(dir);
}
modules = modules_check_deps(modules);