]> code.delx.au - gnu-emacs/commitdiff
Fix more MinGW64 incompatibilities.
authorEli Zaretskii <eliz@gnu.org>
Tue, 26 Mar 2013 13:45:01 +0000 (15:45 +0200)
committerEli Zaretskii <eliz@gnu.org>
Tue, 26 Mar 2013 13:45:01 +0000 (15:45 +0200)
Reported by ׃scar Fuentes in

  http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00733.html

 nt/inc/ms-w32.h (_WIN32_WINNT) [!_W64]: Don't define for MinGW64.
 nt/inc/sys/stat.h (chmod): Remove _CRTIMP from prototype.

 src/w32.c (_PROCESS_MEMORY_COUNTERS_EX) [_WIN32_WINNT < 0x0500]:
 Define only for _WIN32_WINNT less than 0x0500.

nt/ChangeLog
nt/inc/ms-w32.h
nt/inc/sys/stat.h
src/ChangeLog
src/w32.c

index f4fa0a7ee5322631e3b9ded8028b9ce3e97723ff..10f145a0dd9580db1a4aea72dabf860ce4f0874a 100644 (file)
@@ -2,11 +2,15 @@
 
        Fix more incompatibilities between MinGW.org and MinGW64 headers
        reported by Óscar Fuentes in
+       http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00733.html
        http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00699.html
        and in
        http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00707.html.
        * inc/ms-w32.h (USE_NO_MINGW_SETJMP_TWO_ARGS) [_W64]: Define to 1.
        For MinGW64, include sys/types.h and time.h.
+       (_WIN32_WINNT) [!_W64]: Don't define for MinGW64.
+
+       * inc/sys/stat.h (chmod): Remove _CRTIMP from prototype.
 
        * inc/sys/time.h (struct timeval) [!_W64]: Guard definition with
        _W64.
index ccab3695c6c6a0990ec7b94c2ec4c52faa1c79aa..f721676f731b5bfa258b9262f237fe6a68af8372 100644 (file)
@@ -129,9 +129,11 @@ extern char *getenv ();
 
 /* Prevent accidental use of features unavailable in older Windows
    versions we still support.  MinGW64 defines this to a higher value
-   in its system headers, so define our override before including any
-   system headers.  */
-#define _WIN32_WINNT 0x0400
+   in its system headers, and is not really compatible with values
+   lower than 0x0500, so leave it alone.  */
+#ifndef _W64
+# define _WIN32_WINNT 0x0400
+#endif
 
 /* Make a leaner executable.  */
 #define WIN32_LEAN_AND_MEAN 1
index 31129bbf4f30d22237f22dd75ef53ec775683c9a..f6785c56477183d4e0af0a744ad7fb0eb1ffeb82 100644 (file)
@@ -111,6 +111,6 @@ int __cdecl __MINGW_NOTHROW stat (const char*, struct stat*);
 int __cdecl __MINGW_NOTHROW    lstat (const char*, struct stat*);
 int __cdecl __MINGW_NOTHROW    fstatat (int, char const *,
                                                 struct stat *, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW    chmod (const char*, int);
+int __cdecl __MINGW_NOTHROW    chmod (const char*, int);
 
 #endif /* INC_SYS_STAT_H_ */
index 669c8e99a27a9a50ce90c08cf368c60bc44c5e44..93d2b447cd5342625a153c17e20114d260b3bd73 100644 (file)
@@ -1,5 +1,8 @@
 2013-03-26  Eli Zaretskii  <eliz@gnu.org>
 
+       * w32.c (_PROCESS_MEMORY_COUNTERS_EX) [_WIN32_WINNT < 0x0500]:
+       Define only for _WIN32_WINNT less than 0x0500.
+
        Fix incompatibilities between MinGW.org and MinGW64 headers.
        * w32term.c (WCRANGE, GLYPHSET): Don't define if _W64 is defined.
 
index f34d98bc1b8c78822655e9c9d642f9a155e2d94a..861e578985d505e10efac005b3c55413587e829a 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -69,7 +69,8 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <pwd.h>
 #include <grp.h>
 
-#ifdef __GNUC__
+/* MinGW64 (_W64) defines these in its _mingw.h.  */
+#if defined(__GNUC__) && !defined(_W64)
 #define _ANONYMOUS_UNION
 #define _ANONYMOUS_STRUCT
 #endif
@@ -96,6 +97,7 @@ typedef struct _MEMORY_STATUS_EX {
 #ifndef _MSC_VER
 #include <w32api.h>
 #endif
+#if _WIN32_WINNT < 0x0500
 #if !defined (__MINGW32__) || __W32API_MAJOR_VERSION < 3 || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION < 15)
 /* This either is not in psapi.h or guarded by higher value of
    _WIN32_WINNT than what we use.  w32api supplied with MinGW 3.15
@@ -114,6 +116,7 @@ typedef struct _PROCESS_MEMORY_COUNTERS_EX {
   SIZE_T PrivateUsage;
 } PROCESS_MEMORY_COUNTERS_EX,*PPROCESS_MEMORY_COUNTERS_EX;
 #endif
+#endif
 
 #include <winioctl.h>
 #include <aclapi.h>