# define MAP_FAILED ((void *) -1)
#endif
-/* Enable system fnmatch only on systems where we know it works:
- currently glibc-based systems and Solaris. One could add more, but
- fnmatch is not that large, so it might be better to play it
- safe. */
-#if defined __GLIBC__ && __GLIBC__ >= 2
-# define SYSTEM_FNMATCH
-#endif
-#ifdef solaris
-# define SYSTEM_FNMATCH
-#endif
+/* Enable system fnmatch only on systems where fnmatch.h is usable and
+ which are known to have a non-broken fnmatch implementation.
+ Currently those include glibc-based systems and Solaris. One could
+ add more, but fnmatch is not that large, so it might be better to
+ play it safe. */
+#ifdef HAVE_FNMATCH_H
+# if defined __GLIBC__ && __GLIBC__ >= 2
+# define SYSTEM_FNMATCH
+# endif
+# ifdef solaris
+# define SYSTEM_FNMATCH
+# endif
+#endif /* HAVE_FNMATCH_H */
#ifdef SYSTEM_FNMATCH
# include <fnmatch.h>
int fnmatch ();
#endif
+/* Provide sig_atomic_t if the system doesn't. */
+#ifndef HAVE_SIG_ATOMIC_T
+typedef int sig_atomic_t;
+#endif
+
/* Provide uint32_t on the platforms that don't define it. Although
most code should be agnostic about integer sizes, some code really
does need a 32-bit integral type. Such code should use uint32_t.