diff perl-5.22.2/win32/perlglob.c @ 8045:a16537d2fe07

<xfix> tar xf perl-5.22.2.tar.gz # Ah, whatever, I\'m doing it anyway
author HackBot
date Sat, 14 May 2016 14:54:38 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perl-5.22.2/win32/perlglob.c	Sat May 14 14:54:38 2016 +0000
@@ -0,0 +1,58 @@
+/*
+ * Globbing for NT.  Relies on the expansion done by the library
+ * 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>
+#include <string.h>
+#include <windows.h>
+
+int
+main(int argc, char *argv[])
+{
+    int i;
+    size_t len;
+    char root[MAX_PATH];
+    char *dummy;
+    char volname[MAX_PATH];
+    DWORD serial, maxname, flags;
+    BOOL downcase = TRUE;
+
+    /* check out the file system characteristics */
+    if (GetFullPathName(".", MAX_PATH, root, &dummy)) {
+        dummy = strchr(root,'\\'); 
+	if (dummy)
+	    *++dummy = '\0';
+	if (GetVolumeInformation(root, volname, MAX_PATH, 
+				 &serial, &maxname, &flags, 0, 0)) {
+	    downcase = !(flags & FS_CASE_IS_PRESERVED);
+	}
+    }
+
+    setmode(fileno(stdout), O_BINARY);
+    for (i = 1; i < argc; i++) {
+	len = strlen(argv[i]);
+	if (downcase)
+	    strlwr(argv[i]);
+	if (i > 1) fwrite("\0", sizeof(char), 1, stdout);
+	fwrite(argv[i], sizeof(char), len, stdout);
+    }
+    return 0;
+}
+