]> granicus.if.org Git - python/commitdiff
Issue #23451: Update pyconfig.h for Windows to require Vista headers and remove unnec...
authorSteve Dower <steve.dower@microsoft.com>
Mon, 2 Mar 2015 16:01:10 +0000 (08:01 -0800)
committerSteve Dower <steve.dower@microsoft.com>
Mon, 2 Mar 2015 16:01:10 +0000 (08:01 -0800)
Modules/_winapi.c
Modules/socketmodule.h
Objects/unicodeobject.c
PC/pyconfig.h
Python/pytime.c
Python/sysmodule.c

index 51c4d5f45c4d10be30159d662834dd8b8d004ca0..0274874ddae8461b7b4ffd7c22920215bdac9f15 100644 (file)
@@ -1001,6 +1001,12 @@ PyDoc_STRVAR(GetVersion_doc,
 \n\
 Return the version number of the current operating system.");
 
+/* Disable deprecation warnings about GetVersionEx as the result is
+   being passed straight through to the caller, who is responsible for
+   using it correctly. */
+#pragma warning(push)
+#pragma warning(disable:4996)
+
 static PyObject *
 winapi_GetVersion(PyObject* self, PyObject* args)
 {
@@ -1010,6 +1016,8 @@ winapi_GetVersion(PyObject* self, PyObject* args)
     return PyLong_FromUnsignedLong(GetVersion());
 }
 
+#pragma warning(pop)
+
 static PyObject *
 winapi_OpenProcess(PyObject *self, PyObject *args)
 {
index b83f9af3bdedb3cce19d4bf56afb66fc23113781..4b6a10e85a4520bc3210124d693f2eff9b406135 100644 (file)
 
 #else /* MS_WINDOWS */
 # include <winsock2.h>
+/* Windows 'supports' CMSG_LEN, but does not follow the POSIX standard
+ * interface at all, so there is no point including the code that
+ * attempts to use it.
+ */
+# ifdef PySocket_BUILDING_SOCKET
+#  undef CMSG_LEN
+# endif
 # include <ws2tcpip.h>
 /* VC6 is shipped with old platform headers, and does not have MSTcpIP.h
  * Separate SDKs have all the functions we want, but older ones don't have
index 8605c92e3f89b4e704afe5bc8de88ef6edcb5c74..0dea83e505f474a16d13715f5501cdf323542594 100644 (file)
@@ -519,10 +519,6 @@ unicode_result_unchanged(PyObject *unicode)
         return _PyUnicode_Copy(unicode);
 }
 
-#ifdef HAVE_MBCS
-static OSVERSIONINFOEX winver;
-#endif
-
 /* --- Bloom Filters ----------------------------------------------------- */
 
 /* stuff to implement simple "bloom filters" for Unicode characters.
@@ -7112,13 +7108,7 @@ static DWORD
 encode_code_page_flags(UINT code_page, const char *errors)
 {
     if (code_page == CP_UTF8) {
-        if (winver.dwMajorVersion >= 6)
-            /* CP_UTF8 supports WC_ERR_INVALID_CHARS on Windows Vista
-               and later */
-            return WC_ERR_INVALID_CHARS;
-        else
-            /* CP_UTF8 only supports flags=0 on Windows older than Vista */
-            return 0;
+        return WC_ERR_INVALID_CHARS;
     }
     else if (code_page == CP_UTF7) {
         /* CP_UTF7 only supports flags=0 */
@@ -14976,13 +14966,6 @@ int _PyUnicode_Init(void)
     if (PyType_Ready(&PyFormatterIter_Type) < 0)
         Py_FatalError("Can't initialize formatter iter type");
 
-#ifdef HAVE_MBCS
-    winver.dwOSVersionInfoSize = sizeof(winver);
-    if (!GetVersionEx((OSVERSIONINFO*)&winver)) {
-        PyErr_SetFromWindowsErr(0);
-        return -1;
-    }
-#endif
     return 0;
 }
 
index 328be0f362eabf567b0ace9cb188dfbe928faa12..324a1301b788af5713ebe0fad1826bfb454fdaa2 100644 (file)
@@ -156,9 +156,9 @@ WIN32 is still required for the locale module.
 #endif /* MS_WIN64 */
 
 /* set the version macros for the windows headers */
-/* Python 3.4+ requires Windows XP or greater */
-#define Py_WINVER 0x0501 /* _WIN32_WINNT_WINXP */
-#define Py_NTDDI NTDDI_WINXP
+/* Python 3.5+ requires Windows Vista or greater */
+#define Py_WINVER 0x0600 /* _WIN32_WINNT_VISTA */
+#define Py_NTDDI NTDDI_VISTA
 
 /* We only set these values when building Python - we don't want to force
    these values on extensions, as that will affect the prototypes and
index a8460c6867955522499c05e6ed465e3d14123c74..cdaa22ec669a0f3fc9c81ab50cc5db9aa9b3f034 100644 (file)
@@ -7,10 +7,6 @@
 #include <mach/mach_time.h>   /* mach_absolute_time(), mach_timebase_info() */
 #endif
 
-#ifdef MS_WINDOWS
-static OSVERSIONINFOEX winver;
-#endif
-
 static int
 pygettimeofday(_PyTime_timeval *tp, _Py_clock_info_t *info, int raise)
 {
@@ -124,41 +120,11 @@ pymonotonic(_PyTime_timeval *tp, _Py_clock_info_t *info, int raise)
     static _PyTime_timeval last = {0, -1};
 #endif
 #if defined(MS_WINDOWS)
-    static ULONGLONG (*GetTickCount64) (void) = NULL;
-    static ULONGLONG (CALLBACK *Py_GetTickCount64)(void);
-    static int has_gettickcount64 = -1;
     ULONGLONG result;
 
     assert(info == NULL || raise);
 
-    if (has_gettickcount64 == -1) {
-        /* GetTickCount64() was added to Windows Vista */
-        has_gettickcount64 = (winver.dwMajorVersion >= 6);
-        if (has_gettickcount64) {
-            HINSTANCE hKernel32;
-            hKernel32 = GetModuleHandleW(L"KERNEL32");
-            *(FARPROC*)&Py_GetTickCount64 = GetProcAddress(hKernel32,
-                                                           "GetTickCount64");
-            assert(Py_GetTickCount64 != NULL);
-        }
-    }
-
-    if (has_gettickcount64) {
-        result = Py_GetTickCount64();
-    }
-    else {
-        static DWORD last_ticks = 0;
-        static DWORD n_overflow = 0;
-        DWORD ticks;
-
-        ticks = GetTickCount();
-        if (ticks < last_ticks)
-            n_overflow++;
-        last_ticks = ticks;
-
-        result = (ULONGLONG)n_overflow << 32;
-        result += ticks;
-    }
+    result = GetTickCount64();
 
     tp->tv_sec = result / 1000;
     tp->tv_usec = (result % 1000) * 1000;
@@ -166,10 +132,7 @@ pymonotonic(_PyTime_timeval *tp, _Py_clock_info_t *info, int raise)
     if (info) {
         DWORD timeAdjustment, timeIncrement;
         BOOL isTimeAdjustmentDisabled, ok;
-        if (has_gettickcount64)
-            info->implementation = "GetTickCount64()";
-        else
-            info->implementation = "GetTickCount()";
+        info->implementation = "GetTickCount64()";
         info->monotonic = 1;
         ok = GetSystemTimeAdjustment(&timeAdjustment, &timeIncrement,
                                      &isTimeAdjustmentDisabled);
@@ -409,14 +372,6 @@ _PyTime_Init(void)
 {
     _PyTime_timeval tv;
 
-#ifdef MS_WINDOWS
-    winver.dwOSVersionInfoSize = sizeof(winver);
-    if (!GetVersionEx((OSVERSIONINFO*)&winver)) {
-        PyErr_SetFromWindowsErr(0);
-        return -1;
-    }
-#endif
-
     /* ensure that the system clock works */
     if (_PyTime_gettimeofday_info(&tv, NULL) < 0)
         return -1;
index 292830bc25f2bbc75b8a9c447756c42caee242d0..471389cf577d8a380a065d361c9df587fd2656c7 100644 (file)
@@ -772,6 +772,12 @@ static PyStructSequence_Desc windows_version_desc = {
                                  via indexing, the rest are name only */
 };
 
+/* Disable deprecation warnings about GetVersionEx as the result is
+   being passed straight through to the caller, who is responsible for
+   using it correctly. */
+#pragma warning(push)
+#pragma warning(disable:4996)
+
 static PyObject *
 sys_getwindowsversion(PyObject *self)
 {
@@ -803,6 +809,8 @@ sys_getwindowsversion(PyObject *self)
     return version;
 }
 
+#pragma warning(pop)
+
 #endif /* MS_WINDOWS */
 
 #ifdef HAVE_DLOPEN