Inhibit mingw CRT's auto-globbing of command line arguments
authorAndrew Dunstan <[email protected]>
Mon, 25 Apr 2022 19:02:13 +0000 (15:02 -0400)
committerAndrew Dunstan <[email protected]>
Mon, 25 Apr 2022 19:51:58 +0000 (15:51 -0400)
For some reason by default the mingw C Runtime takes it upon itself to
expand program arguments that look like shell globbing characters. That
has caused much scratching of heads and mis-attribution of the causes of
some TAP test failures, so stop doing that.

This removes an inconsistency with Windows binaries built with MSVC,
which have no such behaviour.

Per suggestion from Noah Misch.

Backpatch to all live branches.

Discussion: https://postgr.es/m/20220423025927[email protected]

src/common/exec.c

index 878fc29bc1ae1e61deb6ba6576b40ba0d20292ed..f9d898c0a0de765a5ddfb108fb2d183e99a28e76 100644 (file)
 #include <sys/wait.h>
 #include <unistd.h>
 
+/* Inhibit mingw CRT's auto-globbing of command line arguments */
+#if defined(WIN32) && !defined(_MSC_VER)
+extern int _CRT_glob = 0; /* 0 turns off globbing; 1 turns it on */
+#endif
+
 #ifndef FRONTEND
 /* We use only 3- and 4-parameter elog calls in this file, for simplicity */
 /* NOTE: caller must provide gettext call around str! */