This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Ensure wildcard expansion is enabled for perlglob.exe on Windows
authorSteve Hay <steve.m.hay@googlemail.com>
Thu, 12 Jul 2012 17:07:17 +0000 (18:07 +0100)
committerSteve Hay <steve.m.hay@googlemail.com>
Thu, 12 Jul 2012 17:07:17 +0000 (18:07 +0100)
This is provided by linking in setargv.obj for Visual C++, which the
makefiles already do, but for MinGW(-w64)/gcc we must explicitly ensure
that wildcard expansion is enabled rather than relying on the C-runtime
defaults of the particular compiler suite in question.

This currently only seems to be necessary for the automated build of the
MinGW-w64 cross-compiler (other builds have it enabled by default anyway),
but there's no harm in making sure for others too.

win32/perlglob.c

index 5625294..8add30f 100644 (file)
@@ -1,8 +1,22 @@
 /*
  * Globbing for NT.  Relies on the expansion done by the library
- * startup code
+ * startup code (provided by Visual C++ by linking in setargv.obj).
  */
 
+/* Enable wildcard expansion for gcc's C-runtime library if not enabled by
+ * default (currently necessary with the automated build of the mingw-w64
+ * cross-compiler, but there's no harm in making sure for others too). */
+#ifdef __MINGW32__
+#include <_mingw.h>
+#if defined(__MINGW64_VERSION_MAJOR) && defined(__MINGW64_VERSION_MINOR)
+    // MinGW-w64
+    int _dowildcard = -1;
+#else
+    // MinGW
+    int _CRT_glob = -1;
+#endif
+#endif
+
 #include <stdio.h>
 #include <io.h>
 #include <fcntl.h>