| diff -aur 000/setup.py 001/setup.py |
| --- 000/setup.py 2015-04-09 21:00:48.725278100 -0300 |
| +++ 001/setup.py 2015-04-09 21:02:02.350399800 -0300 |
| @@ -264,16 +264,7 @@ |
| MSVCCompiler.link = monkeypatched_link |
| |
| |
| -sdk_info = find_platform_sdk_dir() |
| -if not sdk_info: |
| - print() |
| - print("It looks like you are trying to build pywin32 in an environment without") |
| - print("the necessary tools installed. It's much easier to grab binaries!") |
| - print() |
| - print("Please read the docstring at the top of this file, or read README.md") |
| - print("for more information.") |
| - print() |
| - raise RuntimeError("Can't find the Windows SDK") |
| +sdk_info = { 'include': '', 'lib': '' } |
| |
| class WinExt (Extension): |
| # Base class for all win32 extensions, with some predefined |
| @@ -305,11 +296,20 @@ |
| |
| extra_link_args = extra_link_args or [] |
| if export_symbol_file: |
| - extra_link_args.append("/DEF:" + export_symbol_file) |
| + extra_link_args.append(export_symbol_file) |
| |
| # Some of our swigged files behave differently in distutils vs |
| # MSVC based builds. Always define DISTUTILS_BUILD so they can tell. |
| define_macros = define_macros or [] |
| + define_macros.append(("NTDDI_VERSION", 0x06000000)) |
| + define_macros.append(("_WIN32_WINNT", 0x0600)) |
| + define_macros.append(("USE_COM_CONTEXT_DEF", None)) |
| + define_macros.append(("NO_PYCOM_IDISPATCHEX", None)) |
| + define_macros.append(("__in", "")) |
| + define_macros.append(("__in_opt", "")) |
| + define_macros.append(("__out", "")) |
| + define_macros.append(("__deref_out_ecount_full(x)", "")) |
| + define_macros.append(("_Check_return_", "")) |
| define_macros.append(("DISTUTILS_BUILD", None)) |
| define_macros.append(("_CRT_SECURE_NO_WARNINGS", None)) |
| self.pch_header = pch_header |
| @@ -638,7 +632,7 @@ |
| |
| def finalize_options(self): |
| build_ext.finalize_options(self) |
| - self.windows_h_version = None |
| + self.windows_h_version = 0x0600 |
| # The pywintypes library is created in the build_temp |
| # directory, so we need to add this to library_dirs |
| self.library_dirs.append(self.build_temp) |
| @@ -865,7 +868,8 @@ |
| log.debug("Looked for %s in %s", lib, look_dirs) |
| return "No library '%s'" % lib |
| self.found_libraries[lib.lower()] = found |
| - patched_libs.append(os.path.splitext(os.path.basename(found))[0]) |
| + lib_name = re.sub(r'^lib(.*)\.a', r'\1', os.path.basename(found)) |
| + patched_libs.append(os.path.splitext(lib_name)[0]) |
| |
| if ext.platforms and self.plat_name not in ext.platforms: |
| return "Only available on platforms %s" % (ext.platforms,) |
| @@ -975,6 +979,9 @@ |
| if not self.compiler.initialized: |
| self.compiler.initialize() |
| |
| + if self.mingw32: |
| + self.compiler.shared_lib_extension = '.dll' |
| + |
| self._fixup_sdk_dirs() |
| |
| # Here we hack a "pywin32" directory (one of 'win32', 'win32com', |
| @@ -1226,7 +1233,7 @@ |
| # XXX This has to be changed for mingw32 |
| # Get the .lib files we need. This is limited to pywintypes, |
| # pythoncom and win32ui - but the first 2 have special names |
| - extra = self.debug and "_d.lib" or ".lib" |
| + extra = self.debug and "_d.def" or ".def" |
| if ext.name in ("pywintypes", "pythoncom"): |
| # The import libraries are created as PyWinTypes23.lib, but |
| # are expected to be pywintypes.lib. |
| @@ -1551,7 +1549,7 @@ |
| win32/src/win32crypt/PyCRYPTPROV.cpp |
| win32/src/win32crypt/PyCTL_CONTEXT.cpp |
| """), |
| - ("win32file", "", None, 0x0500, """ |
| + ("win32file", "ws2_32 mswsock", None, 0x0500, """ |
| win32/src/win32file.i |
| win32/src/win32file_comm.cpp |
| """), |
| @@ -1813,7 +1813,7 @@ |
| WinExt_win32com('axscript', |
| sources=(""" |
| %(axscript)s/AXScript.cpp |
| - %(axscript)s/GUIDS.CPP %(axscript)s/PyGActiveScript.cpp |
| + %(axscript)s/GUIDS.cpp %(axscript)s/PyGActiveScript.cpp |
| %(axscript)s/PyGActiveScriptError.cpp %(axscript)s/PyGActiveScriptParse.cpp |
| %(axscript)s/PyGActiveScriptSite.cpp %(axscript)s/PyGObjectSafety.cpp |
| %(axscript)s/PyIActiveScript.cpp %(axscript)s/PyIActiveScriptError.cpp |
| diff -aur 000/win32/src/odbc.cpp 001/win32/src/odbc.cpp |
| --- 000/win32/src/odbc.cpp 2015-04-09 21:00:49.053401800 -0300 |
| +++ 001/win32/src/odbc.cpp 2015-04-09 21:02:02.366025800 -0300 |
| @@ -93,8 +93,8 @@ |
| static cursorObject *cursor(PyObject *o) { return (cursorObject *)o; } |
| |
| static void cursorDealloc(PyObject *self); |
| -PyMethodDef cursorMethods[]; |
| -PyMemberDef cursorMembers[]; |
| +extern PyMethodDef cursorMethods[8]; |
| +extern PyMemberDef cursorMembers[3]; |
| |
| static PyTypeObject Cursor_Type = { |
| PYWIN_OBJECT_HEAD "odbccur", /*tp_name */ |
| @@ -137,8 +137,8 @@ |
| }; |
| |
| static void connectionDealloc(PyObject *self); |
| -PyMethodDef connectionMethods[]; |
| -PyMemberDef connectionMembers[]; |
| +extern PyMethodDef connectionMethods[6]; |
| +extern PyMemberDef connectionMembers[2]; |
| static PyTypeObject Connection_Type = { |
| PYWIN_OBJECT_HEAD "odbcconn", /*tp_name */ |
| sizeof(connectionObject), /*tp_basicsize */ |
| diff -aur 000/win32/src/PerfMon/perfmondata.cpp 001/win32/src/PerfMon/perfmondata.cpp |
| --- 000/win32/src/PerfMon/perfmondata.cpp 2015-04-09 21:00:48.772153700 -0300 |
| +++ 001/win32/src/PerfMon/perfmondata.cpp 2015-04-09 21:02:02.366025800 -0300 |
| @@ -93,9 +93,9 @@ |
| // these are used to insure that the data collection functions |
| // accessed by Perflib will have the correct calling format. |
| // |
| -PM_OPEN_PROC OpenPerformanceData; |
| -PM_COLLECT_PROC CollectPerformanceData; |
| -PM_CLOSE_PROC ClosePerformanceData; |
| +extern "C" PM_OPEN_PROC OpenPerformanceData; |
| +extern "C" PM_COLLECT_PROC CollectPerformanceData; |
| +extern "C" PM_CLOSE_PROC ClosePerformanceData; |
| |
| TCHAR szFullModulePath[MAX_PATH]; |
| TCHAR szModuleName[MAX_PATH]; // will point into the buffer above. |
| @@ -414,7 +414,7 @@ |
| --*/ |
| { |
| HKEY hAppKey; |
| - TCHAR LogLevelKeyName[] = _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib"); |
| + TCHAR LogLevelKeyName[] = _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib"); |
| |
| TCHAR LogLevelValueName[] = _T("EventLogLevel"); |
| LONG lStatus; |
| diff -aur 000/win32/src/PySecurityObjects.h 001/win32/src/PySecurityObjects.h |
| --- 000/win32/src/PySecurityObjects.h 2015-04-09 21:00:48.850278300 -0300 |
| +++ 001/win32/src/PySecurityObjects.h 2015-04-09 21:01:55.881645000 -0300 |
| @@ -118,7 +118,7 @@ |
| static PyObject *GetSubAuthorityCount(PyObject *self, PyObject *args); |
| static PyObject *GetSubAuthority(PyObject *self, PyObject *args); |
| static PyObject *GetSidIdentifierAuthority(PyObject *self, PyObject *args); |
| - static struct PyMethodDef PySID::methods[]; |
| + static struct PyMethodDef methods[]; |
| |
| protected: |
| PSID m_psid; |
| @@ -155,7 +155,7 @@ |
| /* Python support */ |
| int compare(PyObject *ob); |
| static void deallocFunc(PyObject *ob); |
| - static struct PyMethodDef PyACL::methods[]; |
| + static struct PyMethodDef methods[]; |
| |
| static PyObject *Initialize(PyObject *self, PyObject *args); |
| static PyObject *IsValid(PyObject *self, PyObject *args); |
| diff -aur 000/win32/src/PyWinObjects.h 001/win32/src/PyWinObjects.h |
| --- 000/win32/src/PyWinObjects.h 2015-04-09 21:00:48.881528000 -0300 |
| +++ 001/win32/src/PyWinObjects.h 2015-04-09 21:01:55.881645000 -0300 |
| @@ -49,7 +49,7 @@ |
| PyObject *str(); |
| PyObject *repr(); |
| int compare(PyObject *ob); |
| - PyObject *PyTime::richcompare(PyObject *other, int op); |
| + PyObject *richcompare(PyObject *other, int op); |
| |
| int print(FILE *fp, int flags); |
| Py_hash_t hash(void); |
| diff -aur 000/win32/src/PyWinTypesmodule.cpp 001/win32/src/PyWinTypesmodule.cpp |
| --- 000/win32/src/PyWinTypesmodule.cpp 2015-04-09 21:00:48.990903200 -0300 |
| +++ 001/win32/src/PyWinTypesmodule.cpp 2015-04-09 21:01:55.897264900 -0300 |
| @@ -1119,7 +1119,7 @@ |
| // Function to format a python traceback into a character string. |
| #define GPEM_ERROR(what) \ |
| { \ |
| - errorMsg = "<Error getting traceback - "##what##">"; \ |
| + errorMsg = "<Error getting traceback - " what ">"; \ |
| goto done; \ |
| } |
| PYWINTYPES_EXPORT char *GetPythonTraceback(PyObject *exc_type, PyObject *exc_value, PyObject *exc_tb) |
| --- 000/win32/src/win32crypt/win32cryptmodule.cpp 2015-04-09 21:00:49.194027800 -0300 |
| +++ 001/win32/src/win32crypt/win32cryptmodule.cpp 2015-04-09 21:02:02.397275800 -0300 |
| @@ -581,44 +581,37 @@ |
| pvPara = (void *)&cssrp; |
| } |
| else { |
| - switch ((ULONG_PTR)StoreProvider) { |
| - case CERT_STORE_PROV_PHYSICAL: |
| - case CERT_STORE_PROV_FILENAME: |
| - case CERT_STORE_PROV_SYSTEM: |
| - case CERT_STORE_PROV_SYSTEM_REGISTRY: |
| - case CERT_STORE_PROV_LDAP: { |
| + if (StoreProvider == CERT_STORE_PROV_PHYSICAL || |
| + StoreProvider == CERT_STORE_PROV_FILENAME || |
| + StoreProvider == CERT_STORE_PROV_SYSTEM || |
| + StoreProvider == CERT_STORE_PROV_SYSTEM_REGISTRY || |
| + StoreProvider == CERT_STORE_PROV_LDAP) { |
| if (!PyWinObject_AsWCHAR(obpvPara, (WCHAR **)&pvPara)) |
| return NULL; |
| free_wchar = TRUE; |
| - break; |
| - } |
| - case CERT_STORE_PROV_REG: { |
| + } |
| + else if (StoreProvider == CERT_STORE_PROV_REG) { |
| if (!PyWinObject_AsHKEY(obpvPara, (HKEY *)&pvPara)) |
| return NULL; |
| - break; |
| - } |
| - case CERT_STORE_PROV_FILE: { |
| + } |
| + else if (StoreProvider == CERT_STORE_PROV_FILE) { |
| if (!PyWinObject_AsHANDLE(obpvPara, (HANDLE *)&pvPara)) |
| return NULL; |
| - break; |
| - } |
| - case CERT_STORE_PROV_SERIALIZED: |
| - case CERT_STORE_PROV_PKCS7: { |
| + } |
| + else if (StoreProvider == CERT_STORE_PROV_SERIALIZED || |
| + StoreProvider == CERT_STORE_PROV_PKCS7) { |
| if (!PyWinObject_AsReadBuffer(obpvPara, (void **)&crypt_data_blob.pbData, &crypt_data_blob.cbData)) |
| return NULL; |
| pvPara = (void *)&crypt_data_blob; |
| - break; |
| - } |
| - case CERT_STORE_PROV_MEMORY: { |
| + } |
| + else if (StoreProvider == CERT_STORE_PROV_MEMORY) { |
| // pvPara is not used, warn if something passed in |
| if (obpvPara != Py_None) |
| PyErr_Warn(PyExc_RuntimeWarning, "Para ignored for CERT_STORE_PROV_MEMORY"); |
| - break; |
| - } |
| - default: { |
| + } |
| + else { |
| PyErr_SetString(PyExc_NotImplementedError, "Specified store provider type not supported"); |
| return NULL; |
| - } |
| } |
| } |
| |
| diff -aur 000/win32/src/win32evtlog.i 001/win32/src/win32evtlog.i |
| --- 000/win32/src/win32evtlog.i 2015-04-09 21:00:49.256528100 -0300 |
| +++ 001/win32/src/win32evtlog.i 2015-04-09 21:02:02.397275800 -0300 |
| @@ -1206,6 +1206,14 @@ |
| } |
| PyCFunction pfnPyEvtUpdateBookmark = (PyCFunction) PyEvtUpdateBookmark; |
| |
| +#ifndef EVT_VARIANT_TYPE_ARRAY |
| +#define EVT_VARIANT_TYPE_ARRAY 128 |
| +#endif |
| + |
| +#ifndef EVT_VARIANT_TYPE_MASK |
| +#define EVT_VARIANT_TYPE_MASK 0x7F |
| +#endif |
| + |
| PyObject *PyList_FromEVT_VARIANTArray(PEVT_VARIANT val) |
| { |
| if ((val->Type & EVT_VARIANT_TYPE_ARRAY) == 0) { |
| diff -aur 000/win32/src/win32file_comm.cpp 001/win32/src/win32file_comm.cpp |
| --- 000/win32/src/win32file_comm.cpp 2015-04-09 21:00:49.490903600 -0300 |
| +++ 001/win32/src/win32file_comm.cpp 2015-04-09 21:02:02.412900800 -0300 |
| @@ -163,7 +163,7 @@ |
| PyDCB::~PyDCB(void) {} |
| |
| #define GET_BITFIELD_ENTRY(bitfield_name) \ |
| - else if (strcmp(name, #bitfield_name) == 0) { return PyInt_FromLong(pydcb->m_DCB.##bitfield_name); } |
| + else if (strcmp(name, #bitfield_name) == 0) { return PyInt_FromLong(pydcb->m_DCB.bitfield_name); } |
| |
| PyObject *PyDCB::getattro(PyObject *self, PyObject *obname) |
| { |
| @@ -198,7 +198,7 @@ |
| PyErr_Format(PyExc_TypeError, szNeedIntAttr, #bitfield_name); \ |
| return -1; \ |
| } \ |
| - pydcb->m_DCB.##bitfield_name = PyInt_AsLong(v); \ |
| + pydcb->m_DCB.bitfield_name = PyInt_AsLong(v); \ |
| return 0; \ |
| } |
| |
| @@ -362,7 +362,7 @@ |
| |
| #undef GET_BITFIELD_ENTRY |
| #define GET_BITFIELD_ENTRY(bitfield_name) \ |
| - else if (strcmp(name, #bitfield_name) == 0) { return PyInt_FromLong(pyCOMSTAT->m_COMSTAT.##bitfield_name); } |
| + else if (strcmp(name, #bitfield_name) == 0) { return PyInt_FromLong(pyCOMSTAT->m_COMSTAT.bitfield_name); } |
| |
| PyObject *PyCOMSTAT::getattro(PyObject *self, PyObject *obname) |
| { |
| @@ -391,7 +391,7 @@ |
| PyErr_Format(PyExc_TypeError, szNeedIntAttr, #bitfield_name); \ |
| return -1; \ |
| } \ |
| - pyCOMSTAT->m_COMSTAT.##bitfield_name = PyInt_AsLong(v); \ |
| + pyCOMSTAT->m_COMSTAT.bitfield_name = PyInt_AsLong(v); \ |
| return 0; \ |
| } |
| |
| diff -aur 000/win32/src/win32inet.i 001/win32/src/win32inet.i |
| --- 000/win32/src/win32inet.i 2015-04-09 21:00:49.569028200 -0300 |
| +++ 001/win32/src/win32inet.i 2015-04-09 21:02:02.428526500 -0300 |
| @@ -7,6 +7,22 @@ |
| #include "Windows.h" |
| #include "WinInet.h" |
| #undef BOOLAPI // wininet.h defines this! |
| + |
| +#ifndef INTERNET_OPTION_CODEPAGE_PATH |
| +#define INTERNET_OPTION_CODEPAGE_PATH 100 |
| +#endif |
| + |
| +#ifndef INTERNET_OPTION_CODEPAGE_EXTRA |
| +#define INTERNET_OPTION_CODEPAGE_EXTRA 101 |
| +#endif |
| + |
| +#ifndef INTERNET_OPTION_IDN |
| +#define INTERNET_OPTION_IDN 102 |
| +#endif |
| + |
| +#ifndef INTERNET_OPTION_HTTP_DECODING |
| +#define INTERNET_OPTION_HTTP_DECODING 65 |
| +#endif |
| %} |
| |
| %include "typemaps.i" |
| diff -aur 000/win32/src/win32pdhmodule.cpp 001/win32/src/win32pdhmodule.cpp |
| --- 000/win32/src/win32pdhmodule.cpp 2015-04-09 21:00:49.662779100 -0300 |
| +++ 001/win32/src/win32pdhmodule.cpp 2015-04-09 21:02:02.444150800 -0300 |
| @@ -1005,7 +1005,7 @@ |
| { \ |
| if (i < seqLen) { \ |
| PyObject *subItem = PyTuple_GET_ITEM(flags_tuple, i); \ |
| - myCfg.cfg.##r = PyObject_IsTrue(subItem); \ |
| + myCfg.cfg.r = PyObject_IsTrue(subItem); \ |
| } \ |
| } |
| |
| diff -aur 000/win32/src/win32service.i 001/win32/src/win32service.i |
| --- 000/win32/src/win32service.i 2015-04-09 21:00:49.990904900 -0300 |
| +++ 001/win32/src/win32service.i 2015-04-09 21:02:02.475400700 -0300 |
| @@ -57,6 +57,13 @@ |
| if (fp!=NULL) |
| fpEnumServicesStatusEx=(EnumServicesStatusExfunc)fp; |
| } |
| +#ifndef SERVICE_CONTROL_PRESHUTDOWN |
| +#define SERVICE_CONTROL_PRESHUTDOWN 0x0000000F |
| +#endif |
| + |
| +#ifndef SERVICE_ACCEPT_PRESHUTDOWN |
| +#define SERVICE_ACCEPT_PRESHUTDOWN 0x00000100 |
| +#endif |
| %} |
| |
| %{ |
| --- 000/com/win32comext/mapi/src/mapi_headers/mapidefs.h 2020-06-13 08:39:03.000000000 +0300 |
| +++ 001/com/win32comext/mapi/src/mapi_headers/mapidefs.h 2020-06-19 16:10:51.180079900 +0300 |
| @@ -2728,5 +2728,4 @@ |
| #endif |
| |
| #endif /* MAPIDEFS_H */ |
| - |
| |
| --- 000/com/win32comext/mapi/src/mapi_headers/MAPICode.h 2020-06-13 08:39:03.000000000 +0300 |
| +++ 001/com/win32comext/mapi/src/mapi_headers/MAPICode.h 2020-06-19 16:11:57.872096400 +0300 |
| @@ -216,5 +216,4 @@ |
| #endif |
| |
| #endif /* MAPICODE_H */ |
| - |
| |
| --- 000/com/win32comext/mapi/src/mapi_headers/MSPST.h 2020-06-13 08:39:03.000000000 +0300 |
| +++ 001/com/win32comext/mapi/src/mapi_headers/MSPST.h 2020-06-19 16:12:52.572096500 +0300 |
| @@ -97,5 +97,4 @@ |
| 0xd9, 0x6e, 0x00, 0x00 } |
| |
| #endif /* _MSPST_H_ */ |
| - |
| |
| --- 000/com/win32comext/mapi/src/mapi_headers/MAPIForm.h 2020-06-13 08:39:03.000000000 +0300 |
| +++ 001/com/win32comext/mapi/src/mapi_headers/MAPIForm.h 2020-06-20 13:20:38.548390500 +0300 |
| @@ -631,5 +631,4 @@ |
| |
| #endif /* MAPIFORM_H */ |
| |
| - |
| |
| --- 000/com/win32comext/mapi/src/PyIMAPIAdviseSink.cpp 2020-06-13 08:39:03.000000000 +0300 |
| +++ 001/com/win32comext/mapi/src/PyIMAPIAdviseSink.cpp 2020-06-20 13:17:46.660390600 +0300 |
| @@ -6,6 +6,10 @@ |
| #include "PyMAPIUtil.h" |
| #include "PyIMAPIAdviseSink.h" |
| |
| +#ifdef __MINGW32__ |
| +#define __FUNCSIG__ __PRETTY_FUNCTION__ |
| +#endif |
| + |
| // @doc - This file contains autoduck documentation |
| // --------------------------------------------------- |
| // |