summaryrefslogtreecommitdiff
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:49:35 -0400
commit71f394667c824257ddf6e8359cba746e621a2d16 (patch)
treecc8b72af49d3069a125c3733ed54d1044a8ec02d
parent75a006beef6c502a16bc4e1c0dc4d67d2cd5de9c (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
-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 81b810d4cfa..7dd2f8c4942 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
+
/*
* Hacky solution to allow expressing both frontend and backend error reports
* in one macro call. First argument of log_error is an errcode() call of