diff --git a/src/ChangeLog b/src/ChangeLog
index e507c588..4352716f 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
+
+	* sysdep.h: Define SYSTEM_FNMATCH only if HAVE_FNMATCH_H is true.
+
 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
 
 	* utils.c (xsleep): New function.  Uses nanosleep where available,
diff --git a/src/config.h.in b/src/config.h.in
index 2ae45ee8..abfbb8d8 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -233,6 +233,9 @@ char *alloca ();
 /* Define if you have the <locale.h> header file.  */
 #undef HAVE_LOCALE_H
 
+/* Define if you have the <fnmatch.h> header file.  */
+#undef HAVE_FNMATCH_H
+
 /* Define to be the name of the operating system.  */
 #undef OS_TYPE
 
diff --git a/src/sysdep.h b/src/sysdep.h
index 2c945795..e58daf33 100644
--- a/src/sysdep.h
+++ b/src/sysdep.h
@@ -219,16 +219,19 @@ void *memcpy ();
 # 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>