#define _SVID_SOURCE
#define _BSD_SOURCE
+/* Under glibc-based systems we want all GNU extensions as well. This
+ declares some unnecessary cruft, but also useful functions such as
+ timegm, FNM_CASEFOLD extension to fnmatch, memrchr, etc. */
+#define _GNU_SOURCE
+
#endif /* NAMESPACE_TWEAKS */
-/* Alloca-related defines, straight out of the Autoconf manual. These
- have to be after the above namespace tweaks, but before actual
- declarations and system includes. */
+/* Alloca declaration, based on recommendation in the Autoconf manual.
+ These have to be after the above namespace tweaks, but before any
+ non-preprocessor code. */
#if HAVE_ALLOCA_H
# include <alloca.h>
+#elif defined WINDOWS
+# include <malloc.h>
+# ifndef alloca
+# define alloca _alloca
+# endif
#elif defined __GNUC__
# define alloca __builtin_alloca
#elif defined _AIX
# define alloca __alloca
-#elif defined _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
#else
# include <stddef.h>
# ifdef __cplusplus