From d9cede2c3bfd0739acf294e4e83b36ea9de36b83 Mon Sep 17 00:00:00 2001 From: Andrew Dunstan <andrew@dunslane.net> Date: Mon, 25 Apr 2022 15:02:13 -0400 Subject: [PATCH] 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 --- src/common/exec.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/common/exec.c b/src/common/exec.c index f39b0a294b..8f1147b68a 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