Files
MINGW-packages/mingw-w64-python-pywin32/003-win32-extensions-fix.patch
2021-10-21 17:22:15 +08:00

1352 lines
51 KiB
Diff
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
diff -Naur pywin32-b302-orig/win32/src/PerfMon/PyPerfMon.cpp pywin32-b302/win32/src/PerfMon/PyPerfMon.cpp
--- pywin32-b302-orig/win32/src/PerfMon/PyPerfMon.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/PerfMon/PyPerfMon.cpp 2021-10-12 01:38:03 +0800
@@ -13,7 +13,7 @@
******************************************************************/
#include "PyWinTypes.h"
-#include "Pyperfmon.h"
+#include "pyperfmon.h"
#include "tchar.h"
extern PyObject *PerfmonMethod_NewPERF_COUNTER_DEFINITION(PyObject *self, PyObject *args);
diff -Naur pywin32-b302-orig/win32/src/PerfMon/PyPerfMonControl.h pywin32-b302/win32/src/PerfMon/PyPerfMonControl.h
--- pywin32-b302-orig/win32/src/PerfMon/PyPerfMonControl.h 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/PerfMon/PyPerfMonControl.h 2021-10-12 02:53:24 +0800
@@ -18,6 +18,6 @@
DWORD ControlSize; // Size of this structure.
DWORD TotalSize; // Total Size allocated in the mapped file.
SupplierStatus supplierStatus;
- WCHAR ServiceName[MMCD_SERVICE_SIZE]; // The name of the service or application.
- WCHAR EventSourceName[MMCD_EVENTSOURCE_SIZE]; // Source Name that appears in Event Log for errors.
+ WCHAR ServiceName[MMCD_SERVICE_SIZE+1]; // The name of the service or application.
+ WCHAR EventSourceName[MMCD_EVENTSOURCE_SIZE+1]; // Source Name that appears in Event Log for errors.
};
diff -Naur pywin32-b302-orig/win32/src/PerfMon/PyPerfMsgs.mc pywin32-b302/win32/src/PerfMon/PyPerfMsgs.mc
--- pywin32-b302-orig/win32/src/PerfMon/PyPerfMsgs.mc 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/PerfMon/PyPerfMsgs.mc 2021-10-12 01:25:35 +0800
@@ -86,3 +86,4 @@
.
;//
;#endif // _PYPERFMSG_H_
+
diff -Naur pywin32-b302-orig/win32/src/PerfMon/perfmondata.cpp pywin32-b302/win32/src/PerfMon/perfmondata.cpp
--- pywin32-b302-orig/win32/src/PerfMon/perfmondata.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/PerfMon/perfmondata.cpp 2021-10-12 01:25:29 +0800
@@ -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 -Naur pywin32-b302-orig/win32/src/PyDEVMODE.cpp pywin32-b302/win32/src/PyDEVMODE.cpp
--- pywin32-b302-orig/win32/src/PyDEVMODE.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/PyDEVMODE.cpp 2021-10-12 01:09:28 +0800
@@ -361,6 +361,7 @@
BOOL PyWinObject_AsDEVMODE(PyObject *ob, PDEVMODE *ppDEVMODE, BOOL bNoneOk)
{
if (ob == Py_None)
+ {
if (bNoneOk) {
*ppDEVMODE = NULL;
return TRUE;
@@ -369,6 +370,7 @@
PyErr_SetString(PyExc_ValueError, "PyDEVMODE cannot be None in this context");
return FALSE;
}
+ }
if (!PyDEVMODE_Check(ob))
return FALSE;
*ppDEVMODE = ((PyDEVMODEA *)ob)->GetDEVMODE();
@@ -759,6 +761,7 @@
BOOL PyWinObject_AsDEVMODE(PyObject *ob, PDEVMODEW *ppDEVMODE, BOOL bNoneOk)
{
if (ob == Py_None)
+ {
if (bNoneOk) {
*ppDEVMODE = NULL;
return TRUE;
@@ -767,6 +770,7 @@
PyErr_SetString(PyExc_ValueError, "PyDEVMODE cannot be None in this context");
return FALSE;
}
+ }
if (!PyDEVMODEW_Check(ob))
return FALSE;
*ppDEVMODE = ((PyDEVMODEW *)ob)->GetDEVMODE();
diff -Naur pywin32-b302-orig/win32/src/PyHANDLE.cpp pywin32-b302/win32/src/PyHANDLE.cpp
--- pywin32-b302-orig/win32/src/PyHANDLE.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/PyHANDLE.cpp 2021-10-12 01:09:52 +0800
@@ -135,7 +135,11 @@
0, /* nb_coerce (allowed to be zero) - removed in 3.0 */
#endif
PyHANDLE::intFunc, /* nb_int */
+#if (PY_VERSION_HEX < 0x03000000)
PyHANDLE::longFunc, /* nb_long */
+#else
+ 0,
+#endif
PyHANDLE::unaryFailureFunc, /* nb_float */
// These removed in 3.0
#if (PY_VERSION_HEX < 0x03000000)
diff -Naur pywin32-b302-orig/win32/src/PySecurityObjects.h pywin32-b302/win32/src/PySecurityObjects.h
--- pywin32-b302-orig/win32/src/PySecurityObjects.h 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/PySecurityObjects.h 2021-10-12 01:10:15 +0800
@@ -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 -Naur pywin32-b302-orig/win32/src/PyWinTypes.h pywin32-b302/win32/src/PyWinTypes.h
--- pywin32-b302-orig/win32/src/PyWinTypes.h 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/PyWinTypes.h 2021-10-12 01:12:26 +0800
@@ -28,6 +28,18 @@
#include "windows.h"
#undef WRITE_RESTRICTED // stop anyone using the wrong one accidently...
+#ifndef _MSC_VER
+#define min(x,y) (((x) < (y)) ? (x) : (y))
+#define max(x,y) (((x) > (y)) ? (x) : (y))
+
+#ifndef __try
+#define __try try
+#endif
+#ifndef __except
+#define __except(filter) catch(...)
+#endif
+#endif
+
// Helpers for our modules.
// Some macros to help the pywin32 modules co-exist in py2x and py3k.
// Creates and initializes local variables called 'module' and 'dict'.
diff -Naur pywin32-b302-orig/win32/src/PyWinTypesmodule.cpp pywin32-b302/win32/src/PyWinTypesmodule.cpp
--- pywin32-b302-orig/win32/src/PyWinTypesmodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/PyWinTypesmodule.cpp 2021-10-12 01:12:51 +0800
@@ -1142,11 +1142,19 @@
}
// Function to format a python traceback into a character string.
+#ifdef _MSC_VER
#define GPEM_ERROR(what) \
{ \
errorMsg = "<Error getting traceback - "##what##">"; \
goto done; \
}
+#else
+#define GPEM_ERROR(what) \
+ { \
+ errorMsg = "<Error getting traceback - " what ">"; \
+ goto done; \
+ }
+#endif
PYWINTYPES_EXPORT char *GetPythonTraceback(PyObject *exc_type, PyObject *exc_value, PyObject *exc_tb)
{
// Sleep (30000); // Time enough to attach the debugger (barely)
diff -Naur pywin32-b302-orig/win32/src/PythonService.cpp pywin32-b302/win32/src/PythonService.cpp
--- pywin32-b302-orig/win32/src/PythonService.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/PythonService.cpp 2021-10-12 01:11:36 +0800
@@ -881,6 +881,7 @@
ReportPythonError(E_PYS_NOT_CONTROL_HANDLER);
// else no instance - an error has already been reported.
if (!bServiceDebug)
+ {
if (g_RegisterServiceCtrlHandlerEx) {
// Use 2K/XP extended registration if available
pe->sshStatusHandle = g_RegisterServiceCtrlHandlerEx(lpszArgv[0], service_ctrl_ex, pe);
@@ -889,6 +890,7 @@
// Otherwise fall back to NT
pe->sshStatusHandle = RegisterServiceCtrlHandler(lpszArgv[0], service_ctrl);
}
+ }
}
// No instance - we can't start.
if (!instance) {
@@ -1156,7 +1158,7 @@
else {
// Some other nasty error - log it.
ReportAPIError(PYS_E_API_CANT_START_SERVICE, errCode);
- printf("Could not start the service - error %d\n", errCode);
+ printf("Could not start the service - error %ld\n", errCode);
// Just incase the error was caused by this EXE not being registered
#ifndef BUILD_FREEZE
RegisterPythonServiceExe();
@@ -1312,13 +1314,13 @@
// Register the EXE.
// This writes an entry to the Python registry and also
// to the EventLog so I can stick in messages.
-static BOOL RegisterPythonServiceExe(void)
+BOOL RegisterPythonServiceExe(void)
{
printf("Registering the Python Service Manager...\n");
const int fnameBufSize = MAX_PATH + 1;
TCHAR fnameBuf[fnameBufSize];
if (GetModuleFileName(NULL, fnameBuf, fnameBufSize) == 0) {
- printf("Registration failed due to GetModuleFileName() failing (error %d)\n", GetLastError());
+ printf("Registration failed due to GetModuleFileName() failing (error %ld)\n", GetLastError());
return FALSE;
}
assert(Py_IsInitialized());
@@ -1337,7 +1339,7 @@
wsprintf(keyBuf, _T("Software\\Python\\PythonService\\%hs"), szVerString);
DWORD rc;
if ((rc = RegSetValue(HKEY_LOCAL_MACHINE, keyBuf, REG_SZ, fnameBuf, _tcslen(fnameBuf))) != ERROR_SUCCESS) {
- printf("Registration failed due to RegSetValue() of service EXE - error %d\n", rc);
+ printf("Registration failed due to RegSetValue() of service EXE - error %ld\n", rc);
return FALSE;
}
// don't bother registering in the event log - do it when we write a log entry.
@@ -1373,7 +1375,7 @@
TCHAR cvtBuf[20];
wsprintf(cvtBuf, L"%d", errCode);
- LPTSTR lpszStrings[] = {cvtBuf, buf, L'\0'};
+ LPTSTR lpszStrings[] = {cvtBuf, buf, L"\0"};
ReportError(msgCode, (LPCTSTR *)lpszStrings);
}
diff -Naur pywin32-b302-orig/win32/src/PythonServiceMessages.mc pywin32-b302/win32/src/PythonServiceMessages.mc
--- pywin32-b302-orig/win32/src/PythonServiceMessages.mc 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/PythonServiceMessages.mc 2021-10-12 01:11:50 +0800
@@ -137,7 +137,7 @@
Severity=Error
SymbolicName=E_UNUSED2
Language=English
-
+Unknown error.
.
MessageId=0x8
diff -Naur pywin32-b302-orig/win32/src/_winxptheme.i pywin32-b302/win32/src/_winxptheme.i
--- pywin32-b302-orig/win32/src/_winxptheme.i 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/_winxptheme.i 2021-10-12 01:06:33 +0800
@@ -15,12 +15,14 @@
%include "pywintypes.i"
%{
+#undef _WIN32_IE
#define _WIN32_IE 0x0501 // to enable balloon notifications in Shell_NotifyIcon
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
//#define ISOLATION_AWARE_ENABLED 1
#undef PyHANDLE
-#include "pywinobjects.h"
+#include "PyWinObjects.h"
#include "windows.h"
#include "Uxtheme.h"
#include "commctrl.h"
@@ -93,6 +95,8 @@
return NULL;
}
+%typedef RECT RECT;
+
%typemap(python,ignore) RECT *OUTPUT(RECT temp)
{
$target = &temp;
diff -Naur pywin32-b302-orig/win32/src/mmapfilemodule.cpp pywin32-b302/win32/src/mmapfilemodule.cpp
--- pywin32-b302-orig/win32/src/mmapfilemodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/mmapfilemodule.cpp 2021-10-12 01:07:03 +0800
@@ -71,7 +71,7 @@
{
char *where = (self->data + self->pos);
CHECK_VALID;
- if ((where >= 0) && (where < (self->data + self->size))) {
+ if (((INT_PTR)where >= 0) && (where < (self->data + self->size))) {
PyObject *ret = PyBytes_FromStringAndSize(where, 1);
if (ret)
self->pos += 1;
diff -Naur pywin32-b302-orig/win32/src/odbc.cpp pywin32-b302/win32/src/odbc.cpp
--- pywin32-b302-orig/win32/src/odbc.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/odbc.cpp 2021-10-12 01:07:38 +0800
@@ -93,8 +93,8 @@
static cursorObject *cursor(PyObject *o) { return (cursorObject *)o; }
static void cursorDealloc(PyObject *self);
-PyMethodDef cursorMethods[];
-PyMemberDef cursorMembers[];
+extern PyMethodDef cursorMethods[];
+extern PyMemberDef cursorMembers[];
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[];
+extern PyMemberDef connectionMembers[];
static PyTypeObject Connection_Type = {
PYWIN_OBJECT_HEAD "odbcconn", /*tp_name */
sizeof(connectionObject), /*tp_basicsize */
@@ -379,7 +379,7 @@
}
/* @object connection|An object representing an ODBC connection */
-static struct PyMethodDef connectionMethods[] = {
+struct PyMethodDef connectionMethods[] = {
{"setautocommit", odbcSetAutoCommit, 1}, /* @pymeth setautocommit|Sets the autocommit mode. */
{"commit", odbcCommit, 1}, /* @pymeth commit|Commits a transaction. */
{"rollback", odbcRollback, 1}, /* @pymeth rollback|Rollsback a transaction. */
@@ -387,7 +387,7 @@
{"close", odbcClose, 1}, /* @pymeth close|Closes the connection. */
{0, 0}};
-static PyMemberDef connectionMembers[] = {{"error", T_OBJECT, offsetof(connectionObject, connectionError), READONLY},
+struct PyMemberDef connectionMembers[] = {{"error", T_OBJECT, offsetof(connectionObject, connectionError), READONLY},
{NULL}};
static void connectionDealloc(PyObject *self)
@@ -1422,7 +1422,7 @@
}
/* @object cursor|An object representing an ODBC cursor. */
-static PyMethodDef cursorMethods[] = {
+struct PyMethodDef cursorMethods[] = {
{"close", odbcCurClose, 1}, /* @pymeth close|Closes the cursor */
{"execute", odbcCurExec, 1}, /* @pymeth execute|Execute some SQL */
{"fetchone", odbcCurFetchOne, 1}, /* @pymeth fetchone|Fetch one row of data */
@@ -1432,7 +1432,7 @@
{"setoutputsize", odbcCurSetOutputSize, 1}, /* @pymeth setoutputsize| */
{0, 0}};
-static PyMemberDef cursorMembers[] = {{"description", T_OBJECT, offsetof(cursorObject, description), READONLY},
+struct PyMemberDef cursorMembers[] = {{"description", T_OBJECT, offsetof(cursorObject, description), READONLY},
{"error", T_OBJECT, offsetof(cursorObject, cursorError), READONLY},
{NULL}};
diff -Naur pywin32-b302-orig/win32/src/timermodule.cpp pywin32-b302/win32/src/timermodule.cpp
--- pywin32-b302-orig/win32/src/timermodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/timermodule.cpp 2021-10-12 01:13:06 +0800
@@ -8,7 +8,7 @@
// @doc - Contains autoduck comments for documentation
-#include "pywintypes.h"
+#include "PyWinTypes.h"
//#include "abstract.h"
static PyObject *timer_id_callback_map = NULL;
diff -Naur pywin32-b302-orig/win32/src/win32api_display.cpp pywin32-b302/win32/src/win32api_display.cpp
--- pywin32-b302-orig/win32/src/win32api_display.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32api_display.cpp 2021-10-12 01:13:27 +0800
@@ -134,28 +134,36 @@
return NULL;
if (strcmp(name, "DeviceName") == 0)
+ {
if (pdisplay_device->DeviceName[31] == 0) // in case DeviceName fills space and has no trailing NULL
return PyWinObject_FromTCHAR(pdisplay_device->DeviceName);
else
return PyWinObject_FromTCHAR(pdisplay_device->DeviceName, 32);
+ }
if (strcmp(name, "DeviceString") == 0)
+ {
if (pdisplay_device->DeviceString[127] == 0) // in case DeviceString fills space and has no trailing NULL
return PyWinObject_FromTCHAR(pdisplay_device->DeviceString);
else
return PyWinObject_FromTCHAR(pdisplay_device->DeviceString, 128);
+ }
if (strcmp(name, "DeviceID") == 0)
+ {
if (pdisplay_device->DeviceID[127] == 0) // in case DeviceID fills space and has no trailing NULL
return PyWinObject_FromTCHAR(pdisplay_device->DeviceID);
else
return PyWinObject_FromTCHAR(pdisplay_device->DeviceID, 128);
+ }
if (strcmp(name, "DeviceKey") == 0)
+ {
if (pdisplay_device->DeviceKey[127] == 0) // in case DeviceKey fills space and has no trailing NULL
return PyWinObject_FromTCHAR(pdisplay_device->DeviceKey);
else
return PyWinObject_FromTCHAR(pdisplay_device->DeviceKey, 128);
+ }
return PyObject_GenericGetAttr(self, obname);
}
@@ -243,6 +251,7 @@
BOOL PyWinObject_AsDISPLAY_DEVICE(PyObject *ob, PDISPLAY_DEVICE *ppDISPLAY_DEVICE, BOOL bNoneOk)
{
if (ob == Py_None)
+ {
if (bNoneOk) {
*ppDISPLAY_DEVICE = NULL;
return TRUE;
@@ -251,6 +260,7 @@
PyErr_SetString(PyExc_ValueError, "PyDISPLAY_DEVICE cannot be None in this context");
return FALSE;
}
+ }
if (!PyDISPLAY_DEVICE_Check(ob))
return FALSE;
*ppDISPLAY_DEVICE = ((PyDISPLAY_DEVICE *)ob)->GetDISPLAY_DEVICE();
diff -Naur pywin32-b302-orig/win32/src/win32apimodule.cpp pywin32-b302/win32/src/win32apimodule.cpp
--- pywin32-b302-orig/win32/src/win32apimodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32apimodule.cpp 2021-10-12 01:15:09 +0800
@@ -550,7 +550,7 @@
if (rc == (HINSTANCE)31)
PyErr_SetString(PyWinExc_ApiError, "FindExecutable: There is no association for the file");
else
- PyWin_SetAPIError("FindExecutable", (int)rc);
+ PyWin_SetAPIError("FindExecutable", (INT_PTR)rc);
}
else ret = Py_BuildValue("(NN)", PyWinLong_FromHANDLE(rc), PyWinObject_FromTCHAR(res));
}
@@ -1306,7 +1306,7 @@
if (!PyWinObject_AsResourceId(obid, &id))
return NULL;
// @pyseeapi LoadCursor
- PyW32_BEGIN_ALLOW_THREADS HCURSOR ret = ::LoadCursor(hInstance, MAKEINTRESOURCE(id));
+ PyW32_BEGIN_ALLOW_THREADS HCURSOR ret = ::LoadCursor(hInstance, MAKEINTRESOURCE((ULONG_PTR)id));
PyW32_END_ALLOW_THREADS PyWinObject_FreeResourceId(id);
if (ret == NULL)
ReturnAPIError("LoadCursor");
@@ -1966,7 +1966,7 @@
if (proc == NULL)
return ReturnAPIError("GetProcAddress");
// @pyseeapi GetProcAddress
- return PyWinLong_FromVoidPtr(proc);
+ return PyWinLong_FromVoidPtr((PVOID)proc);
}
// @pymethod <o PyUnicode>|win32api|GetDllDirectory|Returns the DLL search path
@@ -4608,7 +4608,7 @@
PyW32_BEGIN_ALLOW_THREADS HINSTANCE rc = ::ShellExecute(hwnd, op, file, params, dir, show);
PyW32_END_ALLOW_THREADS
// @pyseeapi ShellExecute
- if (rc <= (HINSTANCE)32) PyWin_SetAPIError("ShellExecute", (int)rc);
+ if (rc <= (HINSTANCE)32) PyWin_SetAPIError("ShellExecute", (INT_PTR)rc);
else ret = PyWinLong_FromVoidPtr(rc);
}
PyWinObject_FreeTCHAR(op);
@@ -5592,8 +5592,8 @@
}
PyThreadState *stateSave = PyThreadState_Swap(NULL);
PyThreadState_Swap(stateSave);
- _try { ret = PyObject_CallObject(obFunc, obArgs); }
- _except(PyApplyExceptionFilter(GetExceptionCode(), GetExceptionInformation(), obHandler, &exc_type, &exc_value))
+ __try { ret = PyObject_CallObject(obFunc, obArgs); }
+ __except(PyApplyExceptionFilter(GetExceptionCode(), GetExceptionInformation(), obHandler, &exc_type, &exc_value))
{
// Do my best to restore the thread state to a sane spot.
PyThreadState *stateCur = PyThreadState_Swap(NULL);
diff -Naur pywin32-b302-orig/win32/src/win32clipboardmodule.cpp pywin32-b302/win32/src/win32clipboardmodule.cpp
--- pywin32-b302-orig/win32/src/win32clipboardmodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32clipboardmodule.cpp 2021-10-13 14:28:53 +0800
@@ -17,7 +17,7 @@
#define PY_SSIZE_T_CLEAN // this should be Py_ssize_t clean!
-#include "pywintypes.h"
+#include "PyWinTypes.h"
#define CHECK_NO_ARGS2(args, fnName) \
do { \
@@ -1091,12 +1091,11 @@
{NULL, NULL}};
#define ADD_CONSTANT(tok) \
- if (rc = PyModule_AddIntConstant(module, #tok, tok)) \
+ if (int rc = PyModule_AddIntConstant(module, #tok, tok)) \
return rc
static int AddConstants(PyObject *module)
{
- int rc;
ADD_CONSTANT(CF_TEXT);
ADD_CONSTANT(CF_BITMAP);
ADD_CONSTANT(CF_METAFILEPICT);
diff -Naur pywin32-b302-orig/win32/src/win32consolemodule.cpp pywin32-b302/win32/src/win32consolemodule.cpp
--- pywin32-b302-orig/win32/src/win32consolemodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32consolemodule.cpp 2021-10-12 01:15:50 +0800
@@ -1,4 +1,5 @@
// @doc
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x501
#include "PyWinTypes.h"
#include "PyWinObjects.h"
@@ -1296,6 +1297,7 @@
PyWinObject_AsSMALL_RECT(obcliprect, &pcliprect, TRUE) &&
PyWinObject_AsCOORD(obdestcoord, &pdestcoord, FALSE) &&
PyWinObject_AsSingleWCHAR(obfillchar, &char_info.Char.UnicodeChar))
+ {
if (!ScrollConsoleScreenBuffer(((PyConsoleScreenBuffer *)self)->m_handle, pscrollrect, pcliprect, *pdestcoord,
&char_info))
PyWin_SetAPIError("ScrollConsoleScreenBuffer");
@@ -1303,6 +1305,7 @@
Py_INCREF(Py_None);
return Py_None;
}
+ }
return NULL;
}
@@ -1814,12 +1817,14 @@
CHECK_PFN(AddConsoleAlias);
if (PyWinObject_AsWCHAR(obsource, &source, FALSE) && PyWinObject_AsWCHAR(obtarget, &target, TRUE) &&
PyWinObject_AsWCHAR(obexename, &exename, FALSE))
+ {
if (!(*pfnAddConsoleAlias)(source, target, exename))
PyWin_SetAPIError("AddConsoleAlias");
else {
Py_INCREF(Py_None);
ret = Py_None;
}
+ }
PyWinObject_FreeWCHAR(source);
PyWinObject_FreeWCHAR(target);
PyWinObject_FreeWCHAR(exename);
diff -Naur pywin32-b302-orig/win32/src/win32credmodule.cpp pywin32-b302/win32/src/win32credmodule.cpp
--- pywin32-b302-orig/win32/src/win32credmodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32credmodule.cpp 2021-10-12 01:16:04 +0800
@@ -1,4 +1,5 @@
// @doc
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x501 // Credentials functions only available on WinXP
#include "PyWinTypes.h"
#include "PyWinObjects.h"
diff -Naur pywin32-b302-orig/win32/src/win32crypt/win32cryptmodule.cpp pywin32-b302/win32/src/win32crypt/win32cryptmodule.cpp
--- pywin32-b302-orig/win32/src/win32crypt/win32cryptmodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32crypt/win32cryptmodule.cpp 2021-10-12 01:39:41 +0800
@@ -1,4 +1,5 @@
// @doc
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x502
#include "win32crypt.h"
@@ -486,7 +487,7 @@
CertEnumSystemStore(dwFlags, pvSystemStoreLocationPara, ret, CertEnumSystemStoreCallback);
Py_END_ALLOW_THREADS
- if (!bsuccess)
+ if (!bsuccess)
{
Py_DECREF(ret);
ret = NULL;
@@ -495,10 +496,12 @@
}
if (pvSystemStoreLocationPara != NULL)
+ {
if (dwFlags & CERT_SYSTEM_STORE_RELOCATE_FLAG)
PyWinObject_FreeWCHAR((WCHAR *)cssrp.pwszSystemStore);
else
PyWinObject_FreeWCHAR((WCHAR *)pvSystemStoreLocationPara);
+ }
return ret;
}
@@ -582,6 +585,7 @@
pvPara = (void *)&cssrp;
}
else {
+#ifdef _MSC_VER
switch ((ULONG_PTR)StoreProvider) {
case CERT_STORE_PROV_PHYSICAL:
case CERT_STORE_PROV_FILENAME:
@@ -623,6 +627,41 @@
return NULL;
}
}
+#else
+ if (StoreProvider == CERT_STORE_PROV_PHYSICAL)
+ if (StoreProvider == CERT_STORE_PROV_FILENAME)
+ if (StoreProvider == CERT_STORE_PROV_SYSTEM)
+ if (StoreProvider == CERT_STORE_PROV_SYSTEM_REGISTRY)
+ if (StoreProvider == CERT_STORE_PROV_LDAP) {
+ if (!PyWinObject_AsWCHAR(obpvPara, (WCHAR **)&pvPara))
+ return NULL;
+ free_wchar = TRUE;
+ }
+ if (StoreProvider == CERT_STORE_PROV_REG) {
+ if (!PyWinObject_AsHKEY(obpvPara, (HKEY *)&pvPara))
+ return NULL;
+ }
+ if (StoreProvider == CERT_STORE_PROV_FILE) {
+ if (!PyWinObject_AsHANDLE(obpvPara, (HANDLE *)&pvPara))
+ return NULL;
+ }
+ if (StoreProvider == CERT_STORE_PROV_SERIALIZED)
+ if (StoreProvider == CERT_STORE_PROV_PKCS7) {
+ if (!pybuf.init(obpvPara))
+ return NULL;
+ crypt_data_blob.pbData = (BYTE*)pybuf.ptr();
+ crypt_data_blob.cbData = pybuf.len();
+ pvPara = (void *)&crypt_data_blob;
+ }
+ 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");
+ }
+
+ PyErr_SetString(PyExc_NotImplementedError, "Specified store provider type not supported");
+ return NULL;
+#endif
}
Py_BEGIN_ALLOW_THREADS hcertstore = CertOpenStore(StoreProvider, dwEncodingType, hcryptprov, dwFlags, pvPara);
diff -Naur pywin32-b302-orig/win32/src/win32dynamicdialog.cpp pywin32-b302/win32/src/win32dynamicdialog.cpp
--- pywin32-b302-orig/win32/src/win32dynamicdialog.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32dynamicdialog.cpp 2021-10-12 01:16:31 +0800
@@ -31,7 +31,7 @@
#ifdef WIN32GUI // being compiled from WIN32GUI
#define PYW_EXPORT
-#include "python.h"
+#include "Python.h"
#undef PyHANDLE
#include <windows.h>
#include "commctrl.h"
@@ -40,8 +40,8 @@
#ifdef MS_WINCE
#include "winbase.h"
#endif
-#include "pywintypes.h"
-#include "pywinobjects.h"
+#include "PyWinTypes.h"
+#include "PyWinObjects.h"
#include "tchar.h"
#define BASED_CODE
@@ -54,7 +54,7 @@
#endif
#include "win32dynamicdialog.h"
-static void DwordAlign(PCHAR *ptr)
+void DwordAlign(PCHAR *ptr)
{
size_t offset = ((ULONG_PTR)*ptr) & 0x03;
if (offset > 0) {
@@ -600,7 +600,7 @@
goto cleanup;
if (IS_INTRESOURCE(wclass))
- ret = dlg->Add((WORD)wclass, &tpl, caption);
+ ret = dlg->Add((DWORD_PTR)wclass, &tpl, caption);
else
ret = dlg->Add(wclass, &tpl, caption, pybuf.len(), (BYTE*)pybuf.ptr());
diff -Naur pywin32-b302-orig/win32/src/win32event.i pywin32-b302/win32/src/win32event.i
--- pywin32-b302-orig/win32/src/win32event.i 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32event.i 2021-10-12 01:16:57 +0800
@@ -5,13 +5,14 @@
%{
//#define UNICODE
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
%}
%include "typemaps.i"
%include "pywin32.i"
-%typedef void *NULL_ONLY
+%typedef void *NULL_ONLY;
%typemap(python,in) NULL_ONLY {
if ($source != Py_None) {
@@ -23,6 +24,7 @@
// only seem able to make this work with an incorrect level of
// indirection, and fixing it up inline with a temp.
+%typedef PTIMERAPCROUTINE PTIMERAPCROUTINE;
%typemap(python,in) PTIMERAPCROUTINE *(PTIMERAPCROUTINE temp) {
if ($source != Py_None) {
PyErr_SetString(PyExc_TypeError, "This param must be None");
@@ -93,7 +95,6 @@
BOOLAPI CancelWaitableTimer(PyHANDLE handle);
#endif
-#end
// @pyswig <o PyHANDLE>|CreateEvent|Creates a waitable event
// @rdesc The result is a handle to the created object
@@ -387,7 +388,7 @@
BOOL bAlertable // @pyparm bool|bAlertable||alertable wait flag.
);
#endif
-%typedef DWORD DWORD_WAITAPI
+%typedef DWORD DWORD_WAITAPI;
%typemap(python,except) DWORD_WAITAPI {
Py_BEGIN_ALLOW_THREADS
$function
diff -Naur pywin32-b302-orig/win32/src/win32evtlog.i pywin32-b302/win32/src/win32evtlog.i
--- pywin32-b302-orig/win32/src/win32evtlog.i 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32evtlog.i 2021-10-12 01:17:22 +0800
@@ -4,9 +4,18 @@
// <nl>The Evt* functions are only available on Vista and later. Attempting to call
// them on XP will result in the process exiting, rather than a python exception.
+%{
+#ifndef _MSC_VER
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600 // for EVT_SUBSCRIBE_NOTIFY_ACTION
+#endif
+%}
+
%include "typemaps.i"
%include "pywin32.i"
+%typedef HANDLE EVT_HANDLE;
+
%{
#include <structmember.h>
@@ -15,6 +24,12 @@
#include "PyWinObjects.h"
#include "WinEvt.h"
+#ifndef _MSC_VER
+// http://msdn.microsoft.com/en-us/library/windows/desktop/aa385781%28v=vs.85%29.aspx
+#define EVT_VARIANT_TYPE_ARRAY 128
+#define EVT_VARIANT_TYPE_MASK 0x7F
+#endif
+
// @object PyEVTLOG_HANDLE|Object representing a handle to the windows event log.
// Identical to <o PyHANDLE>, but calls CloseEventLog() on destruction
class PyEVTLOG_HANDLE: public PyHANDLE
diff -Naur pywin32-b302-orig/win32/src/win32file.i pywin32-b302/win32/src/win32file.i
--- pywin32-b302-orig/win32/src/win32file.i 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32file.i 2021-10-12 01:44:31 +0800
@@ -48,7 +48,7 @@
#include "winsock2.h"
#include "mswsock.h"
-#include "pywintypes.h"
+#include "PyWinTypes.h"
#include "winbase.h"
#include "assert.h"
#include <stddef.h>
@@ -73,6 +73,9 @@
%include "typemaps.i"
%include "pywin32.i"
+%typedef DCB DCB;
+%typedef COMMTIMEOUTS COMMTIMEOUTS;
+
%{
#include "datetime.h" // python's datetime header.
@@ -753,8 +756,8 @@
&obHandle, &obCreationTime, &obLastAccessTime, &obLastWriteTime, &UTCTimes))
return NULL;
- if (!PyWinObject_AsHANDLE(obHandle, &hHandle))
- return NULL;
+ if (!PyWinObject_AsHANDLE(obHandle, &hHandle))
+ return NULL;
if (obCreationTime != Py_None){
if (!PyWinObject_AsFILETIME(obCreationTime, &FileTime))
return NULL;
@@ -5391,7 +5394,7 @@
return NULL;
WCHAR *wpathin;
- if (wpathin=PyUnicode_AsUnicode(obpathin)){
+ if (wpathin==PyUnicode_AsUnicode(obpathin)){
if (htrans)
CHECK_PFN(GetFullPathNameTransactedW);
WCHAR *wpathret=NULL, *wfilepart, *wpathsave=NULL;
@@ -5430,7 +5433,7 @@
PyErr_Clear();
char *cpathin;
- if (cpathin=PyBytes_AsString(obpathin)){
+ if (cpathin==PyBytes_AsString(obpathin)){
if (htrans)
CHECK_PFN(GetFullPathNameTransactedA);
char *cpathret=NULL, *cfilepart, *cpathsave=NULL;
diff -Naur pywin32-b302-orig/win32/src/win32file_comm.cpp pywin32-b302/win32/src/win32file_comm.cpp
--- pywin32-b302-orig/win32/src/win32file_comm.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32file_comm.cpp 2021-10-12 01:19:25 +0800
@@ -163,7 +163,7 @@
PyDCB::~PyDCB(void) {}
#define GET_BITFIELD_ENTRY(bitfield_name) \
- else if (strcmp(name, #bitfield_name) == 0) { return PyLong_FromLong(pydcb->m_DCB.##bitfield_name); }
+ else if (strcmp(name, #bitfield_name) == 0) { return PyLong_FromLong(pydcb->m_DCB.bitfield_name); }
PyObject *PyDCB::getattro(PyObject *self, PyObject *obname)
{
@@ -194,11 +194,11 @@
#define SET_BITFIELD_ENTRY(bitfield_name) \
else if (strcmp(name, #bitfield_name) == 0) \
{ \
- if (!PyLong_Check(v)) { \
+ if (!PyLong_Check(v)) { \
PyErr_Format(PyExc_TypeError, szNeedIntAttr, #bitfield_name); \
return -1; \
} \
- pydcb->m_DCB.##bitfield_name = PyLong_AsLong(v); \
+ pydcb->m_DCB.bitfield_name = PyLong_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 PyLong_FromLong(pyCOMSTAT->m_COMSTAT.##bitfield_name); }
+ else if (strcmp(name, #bitfield_name) == 0) { return PyLong_FromLong(pyCOMSTAT->m_COMSTAT.bitfield_name); }
PyObject *PyCOMSTAT::getattro(PyObject *self, PyObject *obname)
{
@@ -387,11 +387,11 @@
#define SET_BITFIELD_ENTRY(bitfield_name) \
else if (strcmp(name, #bitfield_name) == 0) \
{ \
- if (!PyLong_Check(v)) { \
+ if (!PyLong_Check(v)) { \
PyErr_Format(PyExc_TypeError, szNeedIntAttr, #bitfield_name); \
return -1; \
} \
- pyCOMSTAT->m_COMSTAT.##bitfield_name = PyLong_AsLong(v); \
+ pyCOMSTAT->m_COMSTAT.bitfield_name = PyLong_AsLong(v); \
return 0; \
}
diff -Naur pywin32-b302-orig/win32/src/win32gui.i pywin32-b302/win32/src/win32gui.i
--- pywin32-b302-orig/win32/src/win32gui.i 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32gui.i 2021-10-12 01:20:25 +0800
@@ -14,7 +14,9 @@
%{
// #define UNICODE
// #define _UNICODE // for CRT string functions
+#undef _WIN32_IE
#define _WIN32_IE 0x0501 // to enable balloon notifications in Shell_NotifyIcon
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#ifdef WINXPGUI
// This changes the entire world for XP!
@@ -25,9 +27,20 @@
%include "typemaps.i"
%include "pywintypes.i"
+%typedef POINT POINT;
+%typedef RECT RECT;
+%typedef MSG MSG;
+%typedef TRACKMOUSEEVENT TRACKMOUSEEVENT;
+%typedef PAINTSTRUCT PAINTSTRUCT;
+%typedef ICONINFO ICONINFO;
+%typedef LOGFONT LOGFONT;
+%typedef MENUITEMINFO MENUITEMINFO;
+%typedef NOTIFYICONDATA NOTIFYICONDATA;
+%typedef OPENFILENAME OPENFILENAME;
+
%{
#undef PyHANDLE
-#include "pywinobjects.h"
+#include "PyWinObjects.h"
#include "winuser.h"
#include "commctrl.h"
#include "windowsx.h" // For edit control hacks.
@@ -373,14 +386,14 @@
}
%apply COLORREF {long};
-typedef long COLORREF
+typedef long COLORREF;
typedef HANDLE WPARAM;
typedef HANDLE LPARAM;
typedef HANDLE LRESULT;
typedef int UINT;
-%typedef void *NULL_ONLY
+%typedef void *NULL_ONLY;
%typemap(python,in) NULL_ONLY {
if ($source != Py_None) {
@@ -1766,9 +1779,9 @@
%native (PyGetBufferAddressAndLen) PyGetBufferAddressAndLen;
-%typedef TCHAR *STRING_OR_ATOM_CW
-%typedef TCHAR *RESOURCE_ID
-%typedef TCHAR *RESOURCE_ID_NULLOK
+%typedef TCHAR *STRING_OR_ATOM_CW;
+%typedef TCHAR *RESOURCE_ID;
+%typedef TCHAR *RESOURCE_ID_NULLOK;
%typemap(python,arginit) STRING_OR_ATOM_CW, RESOURCE_ID, RESOURCE_ID_NULLOK{
$target=NULL;
@@ -7587,13 +7600,13 @@
"structure says it has %d bytes, but %d was provided",
(int)struct_bytes, (int)pybuf.len());
// @pyseeapi RegisterDeviceNotification
- HDEVNOTIFY not;
+ HDEVNOTIFY notify;
Py_BEGIN_ALLOW_THREADS
- not = RegisterDeviceNotification(handle, pybuf.ptr(), flags);
+ notify = RegisterDeviceNotification(handle, pybuf.ptr(), flags);
Py_END_ALLOW_THREADS
- if (not == NULL)
+ if (notify == NULL)
return PyWin_SetAPIError("RegisterDeviceNotification");
- return PyWinObject_FromHDEVNOTIFY(not);
+ return PyWinObject_FromHDEVNOTIFY(notify);
}
%}
%native(RegisterDeviceNotification) PyRegisterDeviceNotification;
diff -Naur pywin32-b302-orig/win32/src/win32helpmodule.cpp pywin32-b302/win32/src/win32helpmodule.cpp
--- pywin32-b302-orig/win32/src/win32helpmodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32helpmodule.cpp 2021-10-13 14:28:35 +0800
@@ -2546,13 +2546,11 @@
// Module constants:
#define ADD_CONSTANT(tok) \
- if (rc = PyModule_AddIntConstant(module, #tok, tok)) \
+ if (int rc = PyModule_AddIntConstant(module, #tok, tok)) \
return rc
int AddConstants(PyObject *module)
{
- int rc;
-
#ifdef _DEBUG
int debug = 1;
#else
@@ -3093,7 +3091,7 @@
// @const win32help|HH_GPROPID_CONTENT_LANGUAGE|long: LandId for desired
// content.
- return rc;
+ return 0;
}
/* List of functions exported by this module */
diff -Naur pywin32-b302-orig/win32/src/win32inet.i pywin32-b302/win32/src/win32inet.i
--- pywin32-b302-orig/win32/src/win32inet.i 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32inet.i 2021-10-12 01:20:54 +0800
@@ -14,7 +14,14 @@
%{
#undef PyHANDLE // undef earlier define, so we are back to the class.
-#include "pywinobjects.h"
+#include "PyWinObjects.h"
+
+#ifndef _MSC_VER
+#define INTERNET_OPTION_HTTP_DECODING 65
+#define INTERNET_OPTION_CODEPAGE_PATH 100
+#define INTERNET_OPTION_CODEPAGE_EXTRA 101
+#define INTERNET_OPTION_IDN 102
+#endif
void CALLBACK PyHINTERNET_StatusChange(
HINTERNET hInternet,
diff -Naur pywin32-b302-orig/win32/src/win32inet_winhttp.cpp pywin32-b302/win32/src/win32inet_winhttp.cpp
--- pywin32-b302-orig/win32/src/win32inet_winhttp.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32inet_winhttp.cpp 2021-10-12 01:21:09 +0800
@@ -6,8 +6,8 @@
// The intent is to only wrap stuff which isn't otherwise doable from
// Python, such as the proxy stuff.
-#include "pywintypes.h"
-#include "pywinobjects.h"
+#include "PyWinTypes.h"
+#include "PyWinObjects.h"
#include "winhttp.h"
// @doc
diff -Naur pywin32-b302-orig/win32/src/win32lzmodule.cpp pywin32-b302/win32/src/win32lzmodule.cpp
--- pywin32-b302-orig/win32/src/win32lzmodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32lzmodule.cpp 2021-10-12 01:21:22 +0800
@@ -11,7 +11,7 @@
******************************************************************/
-#include "Pywintypes.h"
+#include "PyWinTypes.h"
#include "lzexpand.h"
static PyObject *obHandleMap = NULL;
diff -Naur pywin32-b302-orig/win32/src/win32net/win32netmisc.cpp pywin32-b302/win32/src/win32net/win32netmisc.cpp
--- pywin32-b302-orig/win32/src/win32net/win32netmisc.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32net/win32netmisc.cpp 2021-10-12 01:27:10 +0800
@@ -1417,7 +1417,8 @@
#if WINVER >= 0x0500
-extern "C" NetValidateNamefunc pfnNetValidateName = NULL;
+extern "C" NetValidateNamefunc pfnNetValidateName;
+NetValidateNamefunc pfnNetValidateName = NULL;
// @pymethod |win32net|NetValidateName|Checks that domain/machine/workgroup name is valid for given context
// @rdesc Returns none if valid, exception if not
// @comm If Account and Password aren't passed, current logon credentials are used
@@ -1460,8 +1461,10 @@
return ret;
}
-extern "C" NetValidatePasswordPolicyfunc pfnNetValidatePasswordPolicy = NULL;
-extern "C" NetValidatePasswordPolicyFreefunc pfnNetValidatePasswordPolicyFree = NULL;
+extern "C" NetValidatePasswordPolicyfunc pfnNetValidatePasswordPolicy;
+NetValidatePasswordPolicyfunc pfnNetValidatePasswordPolicy = NULL;
+extern "C" NetValidatePasswordPolicyFreefunc pfnNetValidatePasswordPolicyFree;
+NetValidatePasswordPolicyFreefunc pfnNetValidatePasswordPolicyFree = NULL;
static void PyObject_CleanupAUTH_INPUT(NET_VALIDATE_AUTHENTICATION_INPUT_ARG *p)
{
diff -Naur pywin32-b302-orig/win32/src/win32pdhmodule.cpp pywin32-b302/win32/src/win32pdhmodule.cpp
--- pywin32-b302-orig/win32/src/win32pdhmodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32pdhmodule.cpp 2021-10-12 01:21:44 +0800
@@ -1003,7 +1003,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 -Naur pywin32-b302-orig/win32/src/win32print/win32print.cpp pywin32-b302/win32/src/win32print/win32print.cpp
--- pywin32-b302-orig/win32/src/win32print/win32print.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32print/win32print.cpp 2021-10-12 01:27:40 +0800
@@ -335,6 +335,7 @@
*pbuf = NULL;
if (level == 0)
+ {
if (obinfo == Py_None)
return TRUE;
else {
@@ -346,6 +347,7 @@
}
return TRUE;
}
+ }
if (!PyDict_Check(obinfo)) {
PyErr_Format(PyExc_TypeError, "PRINTER_INFO_%d must be a dictionary", level);
@@ -2454,12 +2456,14 @@
if (PyArg_ParseTuple(args, "OOO:DeletePrinterDriver", &observername, &obenvironment, &obdrivername) &&
PyWinObject_AsWCHAR(observername, &servername, TRUE) &&
PyWinObject_AsWCHAR(obenvironment, &environment, TRUE) && PyWinObject_AsWCHAR(obdrivername, &drivername, FALSE))
+ {
if (DeletePrinterDriverW(servername, environment, drivername)) {
Py_INCREF(Py_None);
ret = Py_None;
}
else
PyWin_SetAPIError("DeletePrinterDriver");
+ }
if (servername != NULL)
PyWinObject_FreeWCHAR(servername);
@@ -2489,12 +2493,14 @@
&versionflag) &&
PyWinObject_AsWCHAR(observername, &servername, TRUE) &&
PyWinObject_AsWCHAR(obenvironment, &environment, TRUE) && PyWinObject_AsWCHAR(obdrivername, &drivername, FALSE))
+ {
if ((*pfnDeletePrinterDriverEx)(servername, environment, drivername, deleteflag, versionflag)) {
Py_INCREF(Py_None);
ret = Py_None;
}
else
PyWin_SetAPIError("DeletePrinterDriverEx");
+ }
if (servername != NULL)
PyWinObject_FreeWCHAR(servername);
diff -Naur pywin32-b302-orig/win32/src/win32process.i pywin32-b302/win32/src/win32process.i
--- pywin32-b302-orig/win32/src/win32process.i 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32process.i 2021-10-12 01:22:08 +0800
@@ -1621,6 +1621,7 @@
$target = PyWinLong_FromVoidPtr($source);
}
+%typedef ULONG_PTR ULONG_PTR;
// @pyswig long|VirtualAllocEx|
LONG_VOIDPTR VirtualAllocEx(
diff -Naur pywin32-b302-orig/win32/src/win32rasmodule.cpp pywin32-b302/win32/src/win32rasmodule.cpp
--- pywin32-b302-orig/win32/src/win32rasmodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32rasmodule.cpp 2021-10-12 03:11:45 +0800
@@ -15,7 +15,7 @@
#define WINVER 0x500
#endif
-#include "pywintypes.h"
+#include "PyWinTypes.h"
#include "ras.h"
#include "raserror.h"
@@ -549,7 +549,7 @@
pNotification = NULL;
}
else if (PyCallable_Check(obCallback)) {
- pNotification = PyRasDialFunc1;
+ pNotification = (LPVOID)PyRasDialFunc1;
notType = 1;
}
else if (PyLong_Check(obCallback)) {
@@ -785,15 +785,15 @@
// @pymethod string|win32ras|GetErrorString|Returns an error string for a RAS error code.
static PyObject *PyRasGetErrorString(PyObject *self, PyObject *args)
{
+ TCHAR buf[512];
DWORD error;
- DWORD rc;
+ DWORD rc = RasGetErrorString(error, buf, sizeof(buf) / sizeof(buf[0]));
if (!PyArg_ParseTuple(args, "i:GetErrorString",
&error)) // @pyparm int|error||The error value being queried.
return NULL;
- TCHAR buf[512];
// @pyseeapi RasGetErrorString
- if (rc = RasGetErrorString(error, buf, sizeof(buf) / sizeof(buf[0])))
+ if (rc)
return ReturnRasError("RasGetErrorString");
return PyWinObject_FromTCHAR(buf);
}
@@ -801,14 +801,14 @@
// @pymethod |win32ras|HangUp|Terminates a remote access session.
static PyObject *PyRasHangUp(PyObject *self, PyObject *args)
{
- DWORD rc;
HRASCONN hras;
+ DWORD rc = RasHangUp(hras);
if (!PyArg_ParseTuple(args, "O&:HangUp", PyWinObject_AsHANDLE,
&hras)) // @pyparm int|hras||The handle to the RAS connection to be terminated.
return NULL;
// @pyseeapi RasHangUp
- if (rc = RasHangUp(hras))
+ if (rc)
return ReturnRasError("RasHangup");
Py_INCREF(Py_None);
return Py_None;
@@ -821,7 +821,7 @@
if (!PyArg_ParseTuple(args, "O&:IsHandleValid", PyWinObject_AsHANDLE,
&hras)) // @pyparm int|hras||The handle to the RAS connection being checked.
return NULL;
- BOOL bRet = (hras >= 0);
+ BOOL bRet = ((INT_PTR)hras >= 0);
return PyBool_FromLong(bRet);
}
@@ -927,7 +927,7 @@
{NULL, NULL}};
#define ADD_CONSTANT(tok) \
- if (rc = PyModule_AddIntConstant(module, #tok, tok)) \
+ if (int rc = PyModule_AddIntConstant(module, #tok, tok)) \
return rc
#define ADD_ENUM(parta, partb) \
if (rc = PyModule_AddIntConstant(module, #parta "_" #partb, parta::partb)) \
@@ -938,7 +938,6 @@
static int AddConstants(PyObject *module)
{
- int rc;
ADD_CONSTANT(RASCS_OpenPort); // @const win32ras|RASCS_OpenPort|Constant for RAS state.
ADD_CONSTANT(RASCS_PortOpened); // @const win32ras|RASCS_PortOpened|Constant for RAS state.
ADD_CONSTANT(RASCS_ConnectDevice); // @const win32ras|RASCS_ConnectDevice|Constant for RAS state.
diff -Naur pywin32-b302-orig/win32/src/win32security.i pywin32-b302/win32/src/win32security.i
--- pywin32-b302-orig/win32/src/win32security.i 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32security.i 2021-10-12 01:24:09 +0800
@@ -5,6 +5,7 @@
%module win32security // An interface to the win32 security API's
%{
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Vista!
%}
@@ -76,7 +77,7 @@
typedef PSecurityFunctionTableW (SEC_ENTRY *InitSecurityInterfacefunc)(void);
static InitSecurityInterfacefunc pfnInitSecurityInterface=NULL;
-extern PSecurityFunctionTableW psecurityfunctiontable=NULL;
+PSecurityFunctionTableW psecurityfunctiontable=NULL;
typedef BOOL (WINAPI *TranslateNamefunc)(LPCTSTR, EXTENDED_NAME_FORMAT, EXTENDED_NAME_FORMAT, LPTSTR, PULONG);
static TranslateNamefunc pfnTranslateName=NULL;
@@ -89,20 +90,20 @@
// function pointers used in win32security_sspi.cpp and win32security_ds.cpp
-extern DsBindfunc pfnDsBind=NULL;
-extern DsUnBindfunc pfnDsUnBind=NULL;
-extern DsGetSpnfunc pfnDsGetSpn=NULL;
-extern DsWriteAccountSpnfunc pfnDsWriteAccountSpn=NULL;
-extern DsFreeSpnArrayfunc pfnDsFreeSpnArray=NULL;
-extern DsGetDcNamefunc pfnDsGetDcName=NULL;
-extern DsCrackNamesfunc pfnDsCrackNames=NULL;
-extern DsListInfoForServerfunc pfnDsListInfoForServer=NULL;
-extern DsListServersForDomainInSitefunc pfnDsListServersForDomainInSite=NULL;
-extern DsListServersInSitefunc pfnDsListServersInSite=NULL;
-extern DsListSitesfunc pfnDsListSites=NULL;
-extern DsListDomainsInSitefunc pfnDsListDomainsInSite=NULL;
-extern DsListRolesfunc pfnDsListRoles=NULL;
-extern DsFreeNameResultfunc pfnDsFreeNameResult=NULL;
+DsBindfunc pfnDsBind=NULL;
+DsUnBindfunc pfnDsUnBind=NULL;
+DsGetSpnfunc pfnDsGetSpn=NULL;
+DsWriteAccountSpnfunc pfnDsWriteAccountSpn=NULL;
+DsFreeSpnArrayfunc pfnDsFreeSpnArray=NULL;
+DsGetDcNamefunc pfnDsGetDcName=NULL;
+DsCrackNamesfunc pfnDsCrackNames=NULL;
+DsListInfoForServerfunc pfnDsListInfoForServer=NULL;
+DsListServersForDomainInSitefunc pfnDsListServersForDomainInSite=NULL;
+DsListServersInSitefunc pfnDsListServersInSite=NULL;
+DsListSitesfunc pfnDsListSites=NULL;
+DsListDomainsInSitefunc pfnDsListDomainsInSite=NULL;
+DsListRolesfunc pfnDsListRoles=NULL;
+DsFreeNameResultfunc pfnDsFreeNameResult=NULL;
static HMODULE advapi32_dll=NULL;
static HMODULE secur32_dll =NULL;
@@ -114,8 +115,8 @@
HMODULE loadmodule(WCHAR *dllname)
{
HMODULE hmodule = GetModuleHandle(dllname);
- if (hmodule==NULL)
- hmodule = LoadLibrary(dllname);
+ if (hmodule==NULL)
+ hmodule = LoadLibrary(dllname);
return hmodule;
}
@@ -3339,12 +3340,14 @@
if (PyWinObject_AsHANDLE(obExistingTokenHandle, &ExistingTokenHandle))
if (PyWinObject_AsSID_AND_ATTRIBUTESArray(obSidsToDisable, &SidsToDisable, &DisableSidCount))
if (PyWinObject_AsSID_AND_ATTRIBUTESArray(obSidsToRestrict, &SidsToRestrict, &RestrictedSidCount))
- if (PyWinObject_AsLUID_AND_ATTRIBUTESArray(obPrivilegesToDelete, &PrivilegesToDelete, &DeletePrivilegeCount))
+ if (PyWinObject_AsLUID_AND_ATTRIBUTESArray(obPrivilegesToDelete, &PrivilegesToDelete, &DeletePrivilegeCount)){
if ((*pfnCreateRestrictedToken)(ExistingTokenHandle,Flags,DisableSidCount,SidsToDisable,
- DeletePrivilegeCount,PrivilegesToDelete,RestrictedSidCount,SidsToRestrict,&NewTokenHandle))
+ DeletePrivilegeCount,PrivilegesToDelete,RestrictedSidCount,SidsToRestrict,&NewTokenHandle)){
ret=PyWinObject_FromHANDLE(NewTokenHandle);
- else
+ }else{
PyWin_SetAPIError("CreateRestrictedToken",GetLastError());
+ }
+ }
if (SidsToDisable!=NULL)
free(SidsToDisable);
if (PrivilegesToDelete!=NULL)
diff -Naur pywin32-b302-orig/win32/src/win32service.i pywin32-b302/win32/src/win32service.i
--- pywin32-b302-orig/win32/src/win32service.i 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32service.i 2021-10-12 01:24:37 +0800
@@ -3,9 +3,18 @@
%module win32service // An interface to the Windows NT Service API
+%{
+#ifndef _MSC_VER
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600 // for SERVICE_*
+#endif
+%}
+
%include "typemaps.i"
%include "pywin32.i"
+%typedef SERVICE_STATUS SERVICE_STATUS;
+
%{
#undef PyHANDLE
#include "PyWinObjects.h"
@@ -24,6 +33,13 @@
// according to msdn, 256 is limit for service names and service display names
#define MAX_SERVICE_NAME_LEN 256
+#ifndef _MSC_VER
+#define SERVICE_ACCEPT_PRESHUTDOWN 0x00000100
+#define SERVICE_CONTROL_PRESHUTDOWN 0x0000000F
+#define SERVICE_SID_TYPE_NONE 0x00000000
+#define SERVICE_SID_TYPE_RESTRICTED 0x00000003
+#define SERVICE_SID_TYPE_UNRESTRICTED 0x00000001
+#endif
%}
%init %{
diff -Naur pywin32-b302-orig/win32/src/win32tsmodule.cpp pywin32-b302/win32/src/win32tsmodule.cpp
--- pywin32-b302-orig/win32/src/win32tsmodule.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32tsmodule.cpp 2021-10-12 01:24:53 +0800
@@ -1,4 +1,5 @@
// @doc
+#undef _WIN32_WINNT
#define _WIN32_WINNT 0x501
#include "PyWinTypes.h"
#include "PyWinObjects.h"
@@ -96,6 +97,7 @@
&WTSConfigClass)) // @pyparm int|ConfigClass||Type of information to be returned, win32ts.WTSUserConfig*
return NULL;
if (PyWinObject_AsWCHAR(obServerName, &ServerName, TRUE) && PyWinObject_AsWCHAR(obUserName, &UserName, FALSE))
+ {
if (!WTSQueryUserConfig(ServerName, UserName, WTSConfigClass, &buf, &bufsize))
PyWin_SetAPIError("WTSQueryUserConfig");
else
@@ -137,6 +139,7 @@
default:
PyErr_SetString(PyExc_NotImplementedError, "Config class not supported yet");
}
+ }
PyWinObject_FreeWCHAR(ServerName);
PyWinObject_FreeWCHAR(UserName);
diff -Naur pywin32-b302-orig/win32/src/win32wnet/PyNCB.cpp pywin32-b302/win32/src/win32wnet/PyNCB.cpp
--- pywin32-b302-orig/win32/src/win32wnet/PyNCB.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32wnet/PyNCB.cpp 2021-10-12 01:27:59 +0800
@@ -29,9 +29,9 @@
#endif
-#include "Pywintypes.h"
+#include "PyWinTypes.h"
#include <windows.h>
-#include "python.h"
+#include "Python.h"
#include "PyNCB.h"
#include <crtdbg.h>
diff -Naur pywin32-b302-orig/win32/src/win32wnet/PyNetresource.cpp pywin32-b302/win32/src/win32wnet/PyNetresource.cpp
--- pywin32-b302-orig/win32/src/win32wnet/PyNetresource.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32wnet/PyNetresource.cpp 2021-10-12 01:28:27 +0800
@@ -30,7 +30,7 @@
#endif
#include "PyWinTypes.h"
-#include "netres.h" // C++ header file for NETRESOURCE object
+#include "Netres.h" // C++ header file for NETRESOURCE object
static PyObject *NETRESOURCE_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
diff -Naur pywin32-b302-orig/win32/src/win32wnet/win32wnet.cpp pywin32-b302/win32/src/win32wnet/win32wnet.cpp
--- pywin32-b302-orig/win32/src/win32wnet/win32wnet.cpp 2021-10-11 08:09:18 +0800
+++ pywin32-b302/win32/src/win32wnet/win32wnet.cpp 2021-10-12 01:28:34 +0800
@@ -54,8 +54,8 @@
#include "PyWinTypes.h"
#include "PyWinObjects.h" // for the PyHANDLE impl.
-#include "netres.h" // NETRESOURCE Type
-#include "pyncb.h"
+#include "Netres.h" // NETRESOURCE Type
+#include "PyNCB.h"
/****************************************************************************
HELPER FUNCTIONS