Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Inhibit mingw CRT's auto-globbing of command line arguments
authorAndrew Dunstan <andrew@dunslane.net>
Mon, 25 Apr 2022 19:02:13 +0000 (15:02 -0400)
committerAndrew Dunstan <andrew@dunslane.net>
Mon, 25 Apr 2022 19:50:01 +0000 (15:50 -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.GA1274057@rfd.leadboat.com

src/common/exec.c

index f39b0a294bf5fbf4af48d6413c8222276b37e53e..8f1147b68a0535edf667397fc82d9955e4c9077a 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
+
 /*
  * 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