From 5132ad8bdf8e85ea0054217ef7ee38c51ace4824 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sun, 12 Dec 2010 13:43:44 -0500
Subject: [PATCH] Make S_IRGRP etc available in mingw builds as well as MSVC.

(Hm, I wonder whether BCC defines them either...)

Also label dangling endifs a bit better in this area.
---
 src/include/port/win32.h | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/src/include/port/win32.h b/src/include/port/win32.h
index 64fa2e176bc..a9b9fcaf5b8 100644
--- a/src/include/port/win32.h
+++ b/src/include/port/win32.h
@@ -315,6 +315,7 @@ extern void pgwin32_unsetenv(const char *);
 
 /* Things that exist in MingW headers, but need to be added to MSVC & BCC */
 #ifdef WIN32_ONLY_COMPILER
+
 #ifndef _WIN64
 typedef long ssize_t;
 #else
@@ -323,24 +324,15 @@ typedef __int64 ssize_t;
 
 #ifndef __BORLANDC__
 typedef unsigned short mode_t;
-#endif
 
-#ifndef __BORLANDC__
 #define S_IRUSR _S_IREAD
 #define S_IWUSR _S_IWRITE
 #define S_IXUSR _S_IEXEC
 #define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
-#define S_IRGRP 0
-#define S_IWGRP 0
-#define S_IXGRP 0
-#define S_IRWXG 0
-#define S_IROTH 0
-#define S_IWOTH 0
-#define S_IXOTH 0
-#define S_IRWXO 0
+/* see also S_IRGRP etc below */
 #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
 #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
-#endif
+#endif /* __BORLANDC__ */
 
 #define F_OK 0
 #define W_OK 2
@@ -363,10 +355,22 @@ typedef unsigned short mode_t;
 #ifndef O_RANDOM
 #define O_RANDOM		0x0010	/* File access is primarily random */
 #define O_SEQUENTIAL	0x0020	/* File access is primarily sequential */
-#define O_TEMPORARY 0x0040		/* Temporary file bit */
+#define O_TEMPORARY		0x0040	/* Temporary file bit */
 #define O_SHORT_LIVED	0x1000	/* Temporary storage file, try not to flush */
 #define _O_SHORT_LIVED	O_SHORT_LIVED
 #endif   /* ifndef O_RANDOM */
 #endif   /* __BORLANDC__ */
 
-#endif
+#endif /* WIN32_ONLY_COMPILER */
+
+/* These aren't provided by either MingW or MSVC */
+#ifndef __BORLANDC__
+#define S_IRGRP 0
+#define S_IWGRP 0
+#define S_IXGRP 0
+#define S_IRWXG 0
+#define S_IROTH 0
+#define S_IWOTH 0
+#define S_IXOTH 0
+#define S_IRWXO 0
+#endif /* __BORLANDC__ */
-- 
GitLab