From: Diego Z. <za...@ce...> - 2000-12-16 02:08:41
|
Hi, After banging my head against the wall for a while, I discovered that the fnmatch function (which tests to see if a filename matches a glob pattern) not only is included in gtk+, but it is broken. fnmatch() is a standard function on Solaris (which I'm using), and I guess on Linux too. Gtk+ also includes it (arguably to have it even on systems where it does not exist), so when a program that uses fnmatch is linked against libgtk, it uses libgtk's version of fnmatch instead of the standard library's. Unfortunately, the version of fnmatch included with Gtk+ is broken. It incorrectly matches slashes (/) with the asterisk (*), even when using the FNM_PATHNAME flag. If your system has fnmatch (and assuming it works correctly), the workaround to this problem is to explicitly add -lc at the beginning of the libraries to link against. That way libc will be checked before libgtk, and the correct version of the function is used. On my system, changing the following line in src/Makefile: LDFLAGS = -L/usr/ceriaslocal/vfs/lib -R/usr/ceriaslocal/vfs/lib `${GTK_CONF IG} --libs` ${LIBS} ${IMLIB_LIBS} ${VFS_LIBS} to this: LDFLAGS = -lc -L/usr/ceriaslocal/vfs/lib -R/usr/ceriaslocal/vfs/lib `${GTK_CONF IG} --libs` ${LIBS} ${IMLIB_LIBS} ${VFS_LIBS} and recompiling fixed the problem. I guess I'll be submitting a bug report to the Gtk+ folks soon :-) Agh. --Diego |