Fixed compilation error with new x86_64-w64-mingw32 compiler

Fixed the following for the new compiler
1. android/camera/camera-capture-windows.c:
   Added "#include <windows.h>"
2. SetClassLong() is deprecated. GCL_HICON doesn't exist in _WIN64.
   Replacted it with SetClassLongPtr(h, GCLP_HICON, icon)
3. [v]asprintf now actually exisit in libray.  Changed the prototype
   to match the standard ones but will remove them later for GCC 4.5 and up.
4. Renamed _set_errno to set_errno because it exists in stdlib.h.
   Renamed _fix_errno to fix_errno for consistency.
5. EAI_NODATA and EAI_NONAME become the same things.
6. ddk/*h don't exisit.  tap-win32.c actually only needs winioctl.h which
   provide constants.  I have make sure they got the same constants in
   both old and new mingw compilers
7. #undef DELETE before redefining it for KEY_CODE in hw-events.h because
   DELETE is defined to be a constant in standard header.

The above don't break the old one (ie. /usr/bin/i586-mingw32msvc-*)

Change-Id: Ic7d13fd0fd237d433f923ee01c6ce50f5c02f095
diff --git a/android/camera/camera-capture-windows.c b/android/camera/camera-capture-windows.c
index e1c5538..7f9df39 100755
--- a/android/camera/camera-capture-windows.c
+++ b/android/camera/camera-capture-windows.c
@@ -19,6 +19,7 @@
  * This code uses capXxx API, available via capCreateCaptureWindow.
  */
 
+#include <windows.h>
 #include <vfw.h>
 #include "android/camera/camera-capture.h"
 #include "android/camera/camera-format-converters.h"
diff --git a/android/hw-events.h b/android/hw-events.h
index 488c299..b8340bd 100644
--- a/android/hw-events.h
+++ b/android/hw-events.h
@@ -41,6 +41,17 @@
 /* BEWARE: The following codes are defined by the Linux kernel headers.
  *         The Android "Menu" key is KEY_SOFT1, *not* KEY_MENU
  */
+/* NOTE: mingw's winnt.h define DELETE to constant
+   i586-mingw32msvc:       #define DELETE  0x00010000L
+   x86_64-w64-mingw32-gcc: #define DELETE  (0x00010000L)
+
+   KEY_CODE belows glues "KEY_" and "DELETE".
+   While KEY_0x00010000L may not mean anything,
+   KEY_(0x00010000L) is absolutely harmful to compiler.
+   Undefine DELETE below
+ */
+#undef DELETE
+
 #define  EVENT_KEY_LIST \
    KEY_CODE(ESC         ,1)     \
    KEY_CODE(1           ,2)     \
diff --git a/android/main-common.c b/android/main-common.c
index 04d200a..2d535c7 100644
--- a/android/main-common.c
+++ b/android/main-common.c
@@ -232,7 +232,7 @@
 
         SDL_GetWMInfo(&wminfo);
 
-        SetClassLong( wminfo.window, GCL_HICON, (LONG)icon );
+        SetClassLongPtr( wminfo.window, GCLP_HICON, (LONG)icon );
 #else  /* !_WIN32 */
         unsigned              icon_w, icon_h;
         size_t                icon_bytes;
diff --git a/osdep.c b/osdep.c
index 6c402d9..a5efe92 100644
--- a/osdep.c
+++ b/osdep.c
@@ -186,10 +186,10 @@
 }
 
 #ifdef WIN32
-int asprintf( char **, char *, ... );
-int vasprintf( char **, char *, va_list );
+int asprintf( char **, const char *, ... );
+int vasprintf( char **, const char *, va_list );
 
-int vasprintf( char **sptr, char *fmt, va_list argv )
+int vasprintf( char **sptr, const char *fmt, va_list argv )
 {
     int wanted = vsnprintf( *sptr = NULL, 0, fmt, argv );
     if( (wanted > 0) && ((*sptr = malloc( 1 + wanted )) != NULL) )
@@ -198,7 +198,7 @@
     return wanted;
 }
 
-int asprintf( char **sptr, char *fmt, ... )
+int asprintf( char **sptr, const char *fmt, ... )
 {
     int retval;
     va_list argv;
diff --git a/sockets.c b/sockets.c
index 1063339..0879c06 100644
--- a/sockets.c
+++ b/sockets.c
@@ -125,7 +125,7 @@
  * errno.
  */
 static int
-_fix_errno( void )
+fix_errno( void )
 {
     const WinsockError*  werr = _winsock_errors;
     int                  unix = EINVAL;  /* generic error code */
@@ -143,7 +143,7 @@
 }
 
 static int
-_set_errno( int  code )
+set_errno( int  code )
 {
     winsock_error = -1;
     errno         = code;
@@ -173,13 +173,13 @@
 }
 #else
 static int
-_fix_errno( void )
+fix_errno( void )
 {
     return -1;
 }
 
 static int
-_set_errno( int  code )
+set_errno( int  code )
 {
     errno = code;
     return -1;
@@ -560,7 +560,7 @@
 #endif /* HAVE_UNIX_SOCKETS */
 
     default:
-        return _set_errno(EINVAL);
+        return set_errno(EINVAL);
     }
 
     return 0;
@@ -575,7 +575,7 @@
            const struct sockaddr_in*  src = from;
 
             if (fromlen < sizeof(*src))
-                return _set_errno(EINVAL);
+                return set_errno(EINVAL);
 
             a->family         = SOCKET_INET;
             a->u.inet.port    = ntohs(src->sin_port);
@@ -589,7 +589,7 @@
             const struct sockaddr_in6*  src = from;
 
             if (fromlen < sizeof(*src))
-                return _set_errno(EINVAL);
+                return set_errno(EINVAL);
 
             a->family     = SOCKET_IN6;
             a->u.in6.port = ntohs(src->sin6_port);
@@ -605,12 +605,12 @@
             char*                end;
 
             if (fromlen < sizeof(*src))
-                return _set_errno(EINVAL);
+                return set_errno(EINVAL);
 
             /* check that the path is zero-terminated */
             end = memchr(src->sun_path, 0, UNIX_PATH_MAX);
             if (end == NULL)
-                return _set_errno(EINVAL);
+                return set_errno(EINVAL);
 
             a->family = SOCKET_UNIX;
             a->u._unix.owner = 1;
@@ -620,7 +620,7 @@
 #endif
 
     default:
-        return _set_errno(EINVAL);
+        return set_errno(EINVAL);
     }
     return 0;
 }
@@ -646,7 +646,8 @@
             err = EHOSTDOWN;
             break;
 
-#ifdef EAI_NODATA
+/* NOTE that in x86_64-w64-mingw32 both EAI_NODATA and EAI_NONAME are the same */
+#if defined(EAI_NODATA) && (EAI_NODATA != EAI_NONAME)
         case EAI_NODATA:
 #endif
         case EAI_NONAME:
@@ -660,7 +661,7 @@
         default:
             err = EINVAL;
         }
-        return _set_errno(err);
+        return set_errno(err);
     }
 
     /* Parse the returned list of addresses. */
@@ -699,7 +700,7 @@
         }
 
         if (r == NULL) {
-            ret = _set_errno(ENOENT);
+            ret = set_errno(ENOENT);
             goto Exit;
         }
 
@@ -765,13 +766,13 @@
         case EAI_ADDRFAMILY:
 #endif
         case EAI_NODATA:
-            _set_errno(ENOENT);
+            set_errno(ENOENT);
             break;
         case EAI_FAMILY:
-            _set_errno(EAFNOSUPPORT);
+            set_errno(EAFNOSUPPORT);
             break;
         case EAI_AGAIN:
-            _set_errno(EAGAIN);
+            set_errno(EAGAIN);
             break;
 #ifdef EAI_SYSTEM
         case EAI_SYSTEM:
@@ -780,7 +781,7 @@
             break;
 #endif
         default:
-            _set_errno(EINVAL);
+            set_errno(EINVAL);
         }
         return NULL;
     }
@@ -874,7 +875,7 @@
         break;
 #endif
     default:
-        return _set_errno(EINVAL);
+        return set_errno(EINVAL);
     }
 
     ret = getnameinfo( saddr, slen, host, hostlen, serv, servlen,
@@ -900,12 +901,12 @@
     int   stype   = socket_type_to_bsd(type);
 
     if (sfamily < 0 || stype < 0) {
-        return _set_errno(EINVAL);
+        return set_errno(EINVAL);
     }
 
     QSOCKET_CALL(ret, socket(sfamily, stype, 0));
     if (ret < 0)
-        return _fix_errno();
+        return fix_errno();
 
     return ret;
 }
@@ -956,7 +957,7 @@
     int  ret; \
     QSOCKET_CALL(ret, (cmd)); \
     if (ret < 0) \
-        return _fix_errno(); \
+        return fix_errno(); \
     return ret; \
 
 int
@@ -998,7 +999,7 @@
 
     QSOCKET_CALL(ret,recvfrom(fd,buf,len,0,sa.sa,&salen));
     if (ret < 0)
-        return _fix_errno();
+        return fix_errno();
 
     if (sock_address_from_bsd(from, &sa, salen) < 0)
         return -1;
@@ -1039,7 +1040,7 @@
 
     QSOCKET_CALL(ret, getsockname(fd, addr.sa, &addrlen));
     if (ret < 0)
-        return _fix_errno();
+        return fix_errno();
 
     return sock_address_from_bsd(address, &addr, addrlen);
 }
@@ -1053,7 +1054,7 @@
 
     QSOCKET_CALL(ret, getpeername(fd, addr.sa, &addrlen));
     if (ret < 0)
-        return _fix_errno();
+        return fix_errno();
 
     return sock_address_from_bsd(address, &addr, addrlen);
 }
@@ -1073,7 +1074,7 @@
 
     QSOCKET_CALL(ret, accept(fd, addr.sa, &addrlen));
     if (ret < 0)
-        return _fix_errno();
+        return fix_errno();
 
     if (address) {
         if (sock_address_from_bsd(address, &addr, addrlen) < 0) {
@@ -1517,7 +1518,7 @@
                      (const char *)&imr,
                      sizeof(struct ip_mreq)) < 0 )
     {
-        return _fix_errno();
+        return fix_errno();
     }
     return 0;
 }
@@ -1534,7 +1535,7 @@
                      (const char *)&imr,
                      sizeof(struct ip_mreq)) < 0 )
     {
-        return _fix_errno();
+        return fix_errno();
     }
     return 0;
 }
diff --git a/tap-win32.c b/tap-win32.c
index ba93355..ce30a50 100644
--- a/tap-win32.c
+++ b/tap-win32.c
@@ -31,13 +31,7 @@
 #include "sysemu.h"
 #include <stdio.h>
 #include <windows.h>
-
-/* NOTE: PCIBus is redefined in winddk.h */
-#define PCIBus _PCIBus
-#include <ddk/ntapi.h>
-#include <ddk/winddk.h>
-#include <ddk/ntddk.h>
-#undef PCIBus
+#include <winioctl.h>
 
 //=============
 // TAP IOCTLs