On Feb 12, 2013, at 8:43 AM, Timo <
timomlists gmail com> wrote:
> I'm not really sure if I should ask this here. If not, please advice and sorry for the noise.
>
> Building GTK+ failed because Gdk-pixbuf failed to update the loader cache. When trying to update it manually, I found out that it's looking for loadernames that don't exist. The same when trying to update the Pango cache.
>
> $ ./pango-querymodules --update-cache
> Cannot load module /Users/timo/gtk/inst/lib/pango/1.8.0/modules/lang.so: dlopen(/Users/timo/gtk/inst/lib/pango/1.8.0/modules/lang.so, 1): image not found
> /Users/timo/gtk/inst/lib/pango/1.8.0/modules/lang.so does not export Pango module API
> Cannot load module /Users/timo/gtk/inst/lib/pango/1.8.0/modules/oretext.so: dlopen(/Users/timo/gtk/inst/lib/pango/1.8.0/modules/oretext.so, 1): image not found
> /Users/timo/gtk/inst/lib/pango/1.8.0/modules/oretext.so does not export Pango module API
> Cannot load module /Users/timo/gtk/inst/lib/pango/1.8.0/modules/ang.so: dlopen(/Users/timo/gtk/inst/lib/pango/1.8.0/modules/ang.so, 1): image not found
> /Users/timo/gtk/inst/lib/pango/1.8.0/modules/ang.so does not export Pango module API
>
> It seems that g_dir_read_name() doesn't return the full filenames. I hacked something up with the pixbuf loader, because all filenames start the same, like this:
>
> queryloaders.c:348
> const char *dent;
> char dent2[] = "libpixbufload\0";
> char *dent_new;
>
> while ((dent = g_dir_read_name (dir))) {
> gint len = strlen (dent);
> dent_new = g_strconcat(dent2, dent, NULL);
> if (len > SOEXT_LEN &&
> strcmp (dent + len - SOEXT_LEN, SOEXT) == 0) {
> query_module (contents, path, dent_new);
> }
>
> And it works. The loaders are written correctly. But the Pango filenames are different, so this hack won't work.
>
> Does anybody know why g_dir_read_name() doesn't return the full filename? And even better, how to fix this?
>