summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2022-04-25 15:02:13 -0400
committerAndrew Dunstan <andrew@dunslane.net>2022-04-25 15:51:58 -0400
commit58887d58c6addd2ed727d57520c6c4629d59f89a (patch)
tree7fd77b2cab3d96ba87f56ca9fd70e92fbe134a02 /src
parent5d223e4e0691911d1addbacbb6d843ac5c8af53a (diff)
Inhibit mingw CRT's auto-globbing of command line arguments
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.GA1274057@rfd.leadboat.com
Diffstat (limited to 'src')
-rw-r--r--src/common/exec.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/common/exec.c b/src/common/exec.c
index 878fc29bc1a..f9d898c0a0d 100644
--- a/src/common/exec.c
+++ b/src/common/exec.c
@@ -25,6 +25,11 @@
#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! */