Subject: Re: [PATCH] Windows: Do not redefine _WIN32_WINNT

From: Junio C Hamano <[email-masked]>
Date: Wed, 11 Sep 2013 14:51:28 -0700

Sebastian Schuberth <[email-masked]> writes:

> On Wed, Sep 11, 2013 at 8:29 PM, Junio C Hamano <[email-masked]> wrote:
>
>> This unfortunately does not seem to match what I have. I think the
>> patch is based on the codebase before these two:
>>
>>  380395d0 (mingw: rename WIN32 cpp macro to GIT_WINDOWS_NATIVE, 2013-05-02)
>>  41f29991 (msvc: Fix compilation errors caused by poll.h emulation, 2013-01-31)
>>
>> I could of course wiggle it in, if you want, but I wanted to know
>> what is going on.  Is it a pre-release freeze period on your side or
>> something?
>
> That's right, I currently have a code freeze at Git 1.8.3 because I
> need to solve several other issues with Git 1.8.4 on Windows first.
> I'd be grateful if you could "wiggle it in".

It seems that compat/poll/poll.c also defines _WIN32_WINNT (but only
with _MSC_VER defined).  The change to git-compat-util.h in this
patch avoids redefinition for both MinGW and MSVC case.  Do you also
need to have this, too?

Here is what I tentatively queued on top of the three from Karsten,
and your "Fix stat definitions".

-- >8 --
From: Sebastian Schuberth <[email-masked]>
Date: Wed, 11 Sep 2013 18:06:31 +0200
Subject: [PATCH] Windows: do not redefine _WIN32_WINNT

With MinGW runtime version 4.0 this interferes with the previous
definition from sdkddkver.h.

Signed-off-by: Sebastian Schuberth <[email-masked]>
Signed-off-by: Junio C Hamano <[email-masked]>
---
 compat/nedmalloc/malloc.c.h | 2 ++
 compat/poll/poll.c          | 2 +-
 git-compat-util.h           | 2 +-
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/compat/nedmalloc/malloc.c.h b/compat/nedmalloc/malloc.c.h
index ed4f1fa..f216a2a 100644
--- a/compat/nedmalloc/malloc.c.h
+++ b/compat/nedmalloc/malloc.c.h
@@ -499,7 +499,9 @@ MAX_RELEASE_CHECK_RATE   default: 4095 unless not HAVE_MMAP
 #endif  /* WIN32 */
 #ifdef WIN32
 #define WIN32_LEAN_AND_MEAN
+#ifndef _WIN32_WINNT
 #define _WIN32_WINNT 0x403
+#endif
 #include <windows.h>
 #define HAVE_MMAP 1
 #define HAVE_MORECORE 0
diff --git a/compat/poll/poll.c b/compat/poll/poll.c
index 4410310..31163f2 100644
--- a/compat/poll/poll.c
+++ b/compat/poll/poll.c
@@ -39,7 +39,7 @@
 
 #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
 # define WIN32_NATIVE
-# if defined (_MSC_VER)
+# if defined (_MSC_VER) && !defined(_WIN32_WINNT)
 #  define _WIN32_WINNT 0x0502
 # endif
 # include <winsock2.h>
diff --git a/git-compat-util.h b/git-compat-util.h
index 9549de6..7776f12 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -86,7 +86,7 @@
 #define _SGI_SOURCE 1
 
 #if defined(WIN32) && !defined(__CYGWIN__) /* Both MinGW and MSVC */
-# if defined (_MSC_VER)
+# if defined (_MSC_VER) && !defined(_WIN32_WINNT)
 #  define _WIN32_WINNT 0x0502
 # endif
 #define WIN32_LEAN_AND_MEAN  /* stops windows.h including winsock.h */
-- 
1.8.4-469-g57f7e3a