a2ps-4.13c compile fix on uclibc (patch included)

Yuri Vasilevski <[email protected]> Sat, 27 May 2006 13:06:53 -0500
Newsgroups gmane.comp.printing.a2ps.bugs
Message-ID <[email protected]>
Hi,

a2ps fails to compile on uclibc systems. This is with a2ps-4.13c
(gentoo package app-text/a2ps-4.13c-r4) on uclibc-0.9.28 on a gentoo
embedded system.

The configure script detects that fnmatch function is broken, but the
replacement provided in the lib dir does not work as expected because of
two problems:
1) the configure script correctly redefines fnmatch to rpl_fnmatch, but
   the replacement defines fnmatch (so rpl_fnmatch is undefined).
2) uclibc aiming to be GNU libc compatible defines __GNU_LIBRARY__, so
   the check inside fnmatch.c for some reason decides that the configure
   script was wrong and that there is no need to build the
   replacement. :-S

For more details please see gentoo bug:
http://bugs.gentoo.org/show_bug.cgi?id=134546

Best wishes,
Yuri.

_______________________________________________
bug-a2ps mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-a2ps
a2ps-4.13c-fnmatch-replacement.patch (text/x-patch, 1.5 KB)
diff -Naurp a2ps-4.13.orig/lib/fnmatch.c a2ps-4.13/lib/fnmatch.c
--- a2ps-4.13.orig/lib/fnmatch.c	2002-03-04 12:46:25 -0600
+++ a2ps-4.13/lib/fnmatch.c	2006-05-27 11:41:15 -0500
@@ -27,18 +27,6 @@
 #include <fnmatch.h>
 #include <ctype.h>
 
-
-/* Comment out all this code if we are using the GNU C Library, and are not
-   actually compiling the library itself.  This code is part of the GNU C
-   Library, but also included in many other GNU distributions.  Compiling
-   and linking in this code is a waste when using the GNU C library
-   (especially if it is a shared library).  Rather than having every GNU
-   program understand `configure --with-gnu-libc' and omit the object files,
-   it is simpler to just do this in the source for each such file.  */
-
-#if defined _LIBC || !defined __GNU_LIBRARY__
-
-
 # if defined STDC_HEADERS || !defined isascii
 #  define ISASCII(c) 1
 # else
@@ -52,10 +40,13 @@
 extern int errno;
 # endif
 
+/* fnmatch replacement taken from the GNU C Library for systems that 
+   provide a broken implementation. */
+
 /* Match STRING against the filename pattern PATTERN, returning zero if
    it matches, nonzero if not.  */
 int
-fnmatch (const char *pattern, const char *string, int flags)
+rpl_fnmatch (const char *pattern, const char *string, int flags)
 {
   register const char *p = pattern, *n = string;
   register char c;
@@ -233,5 +224,3 @@ fnmatch (const char *pattern, const char
 
 # undef FOLD
 }
-
-#endif	/* _LIBC or not __GNU_LIBRARY__.  */