-/*
- * Function for use with lt_dlforeachfile. The user data must point to
- * a UPkg with the GTypeModule name field initialized. If a suitable file
- * is found and could be successfully opened for reading, the pkg class member
- * will be filled in.
- */
-static int find_package_by_name(const char *filename, void *data)
-{
- GTypeModule *m = G_TYPE_MODULE(data);
- UPkg *upkg = U_PKG(data);
-
- const char *base;
- size_t len;
- char *buf;
-
- base = strrchr(filename, '/');
- if (base) {
- base++;
- } else {
- base = filename;
- }
-
- if (str_cmp_lower(base, m->name) != 0)
- return 0;
-
- len = strlen(filename);
- buf = malloc(len + sizeof **u_pkg_exts);
- if (!buf)
- return 0;
- strcpy(buf, filename);
-
- for (unsigned i = 0; i < sizeof u_pkg_exts / sizeof *u_pkg_exts; i++) {
- strcpy(buf+len, u_pkg_exts[i]);
- upkg->pkg = upkg_fopen(buf);
- if (!upkg->pkg) {
- free(buf);
- return 1;
- }
- }
-
- free(buf);
- return 0;
-}
-