mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Restore support for Microsoft VC6 compiler.
Some functions in the msvcrt module are skipped, and socket.ioctl is enabled only when using a more recent Platform SDK. (and yes, there are still companies that use a 10-years old compiler)
This commit is contained in:
		
							parent
							
								
									114f7e5fff
								
							
						
					
					
						commit
						a4dd2e20e2
					
				
					 8 changed files with 35 additions and 26 deletions
				
			
		| 
						 | 
				
			
			@ -153,7 +153,7 @@ PyAPI_DATA(PyThreadState*) _PyOS_ReadlineTState;
 | 
			
		|||
   to a 8k margin. */
 | 
			
		||||
#define PYOS_STACK_MARGIN 2048
 | 
			
		||||
 | 
			
		||||
#if defined(WIN32) && !defined(MS_WIN64) && defined(_MSC_VER)
 | 
			
		||||
#if defined(WIN32) && !defined(MS_WIN64) && defined(_MSC_VER) && _MSC_VER >= 1300
 | 
			
		||||
/* Enable stack checking under Microsoft C */
 | 
			
		||||
#define USE_STACKCHECK
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@
 | 
			
		|||
 | 
			
		||||
/* Windows socket errors (WSA*)  */
 | 
			
		||||
#ifdef MS_WINDOWS
 | 
			
		||||
#include <winsock.h>
 | 
			
		||||
#include <windows.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2805,7 +2805,7 @@ PyDoc_STRVAR(shutdown_doc,
 | 
			
		|||
Shut down the reading side of the socket (flag == SHUT_RD), the writing side\n\
 | 
			
		||||
of the socket (flag == SHUT_WR), or both ends (flag == SHUT_RDWR).");
 | 
			
		||||
 | 
			
		||||
#ifdef MS_WINDOWS
 | 
			
		||||
#if defined(MS_WINDOWS) && defined(SIO_RCVALL)
 | 
			
		||||
static PyObject*
 | 
			
		||||
sock_ioctl(PySocketSockObject *s, PyObject *arg)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -2858,7 +2858,7 @@ static PyMethodDef sock_methods[] = {
 | 
			
		|||
			  METH_NOARGS, getsockname_doc},
 | 
			
		||||
	{"getsockopt",	  (PyCFunction)sock_getsockopt, METH_VARARGS,
 | 
			
		||||
			  getsockopt_doc},
 | 
			
		||||
#ifdef MS_WINDOWS
 | 
			
		||||
#if defined(MS_WINDOWS) && defined(SIO_RCVALL)
 | 
			
		||||
	{"ioctl",	  (PyCFunction)sock_ioctl, METH_VARARGS,
 | 
			
		||||
			  sock_ioctl_doc},
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,19 +13,23 @@
 | 
			
		|||
# endif
 | 
			
		||||
 | 
			
		||||
#else /* MS_WINDOWS */
 | 
			
		||||
#if _MSC_VER >= 1300
 | 
			
		||||
# include <winsock2.h>
 | 
			
		||||
# 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
 | 
			
		||||
 * any version information. I use IPPROTO_IPV6 to detect a decent SDK.
 | 
			
		||||
 */
 | 
			
		||||
# ifdef IPPROTO_IPV6
 | 
			
		||||
#  include <MSTcpIP.h> /* for SIO_RCVALL */
 | 
			
		||||
#  define HAVE_ADDRINFO
 | 
			
		||||
#  define HAVE_SOCKADDR_STORAGE
 | 
			
		||||
#  define HAVE_GETADDRINFO
 | 
			
		||||
#  define HAVE_GETNAMEINFO
 | 
			
		||||
#  define ENABLE_IPV6
 | 
			
		||||
#else
 | 
			
		||||
# include <winsock.h>
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
# else
 | 
			
		||||
typedef int socklen_t;
 | 
			
		||||
# endif /* IPPROTO_IPV6 */
 | 
			
		||||
#endif /* MS_WINDOWS */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_SYS_UN_H
 | 
			
		||||
# include <sys/un.h>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,7 +54,7 @@ BSC32=bscmake.exe
 | 
			
		|||
# ADD BSC32 /nologo
 | 
			
		||||
LINK32=link.exe
 | 
			
		||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
 | 
			
		||||
# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_socket.pyd"
 | 
			
		||||
# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_socket.pyd"
 | 
			
		||||
# SUBTRACT LINK32 /pdb:none
 | 
			
		||||
 | 
			
		||||
!ELSEIF  "$(CFG)" == "_socket - Win32 Debug"
 | 
			
		||||
| 
						 | 
				
			
			@ -82,7 +82,7 @@ BSC32=bscmake.exe
 | 
			
		|||
# ADD BSC32 /nologo
 | 
			
		||||
LINK32=link.exe
 | 
			
		||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
 | 
			
		||||
# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_socket_d.pyd" /pdbtype:sept
 | 
			
		||||
# ADD LINK32 user32.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /base:"0x1e1D0000" /subsystem:windows /dll /debug /machine:I386 /out:"./_socket_d.pyd" /pdbtype:sept
 | 
			
		||||
# SUBTRACT LINK32 /pdb:none
 | 
			
		||||
 | 
			
		||||
!ENDIF 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -97,6 +97,10 @@ SOURCE=..\..\Modules\_bisectmodule.c
 | 
			
		|||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
 | 
			
		||||
SOURCE=..\..\Modules\_bytesio.c
 | 
			
		||||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
 | 
			
		||||
SOURCE=..\..\Modules\cjkcodecs\_codecs_cn.c
 | 
			
		||||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -143,6 +143,7 @@ msvcrt_getch(PyObject *self, PyObject *args)
 | 
			
		|||
	return PyString_FromStringAndSize(s, 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef _WCONIO_DEFINED
 | 
			
		||||
static PyObject *
 | 
			
		||||
msvcrt_getwch(PyObject *self, PyObject *args)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -158,6 +159,7 @@ msvcrt_getwch(PyObject *self, PyObject *args)
 | 
			
		|||
	u[0] = ch;
 | 
			
		||||
	return PyUnicode_FromUnicode(u, 1);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static PyObject *
 | 
			
		||||
msvcrt_getche(PyObject *self, PyObject *args)
 | 
			
		||||
| 
						 | 
				
			
			@ -175,6 +177,7 @@ msvcrt_getche(PyObject *self, PyObject *args)
 | 
			
		|||
	return PyString_FromStringAndSize(s, 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef _WCONIO_DEFINED
 | 
			
		||||
static PyObject *
 | 
			
		||||
msvcrt_getwche(PyObject *self, PyObject *args)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -190,6 +193,7 @@ msvcrt_getwche(PyObject *self, PyObject *args)
 | 
			
		|||
	s[0] = ch;
 | 
			
		||||
	return PyUnicode_FromUnicode(s, 1);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static PyObject *
 | 
			
		||||
msvcrt_putch(PyObject *self, PyObject *args)
 | 
			
		||||
| 
						 | 
				
			
			@ -204,7 +208,7 @@ msvcrt_putch(PyObject *self, PyObject *args)
 | 
			
		|||
	return Py_None;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef _WCONIO_DEFINED
 | 
			
		||||
static PyObject *
 | 
			
		||||
msvcrt_putwch(PyObject *self, PyObject *args)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -223,6 +227,7 @@ msvcrt_putwch(PyObject *self, PyObject *args)
 | 
			
		|||
	Py_RETURN_NONE;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static PyObject *
 | 
			
		||||
msvcrt_ungetch(PyObject *self, PyObject *args)
 | 
			
		||||
| 
						 | 
				
			
			@ -238,6 +243,7 @@ msvcrt_ungetch(PyObject *self, PyObject *args)
 | 
			
		|||
	return Py_None;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef _WCONIO_DEFINED
 | 
			
		||||
static PyObject *
 | 
			
		||||
msvcrt_ungetwch(PyObject *self, PyObject *args)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -251,6 +257,7 @@ msvcrt_ungetwch(PyObject *self, PyObject *args)
 | 
			
		|||
	Py_INCREF(Py_None);
 | 
			
		||||
	return Py_None;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
insertint(PyObject *d, char *name, int value)
 | 
			
		||||
| 
						 | 
				
			
			@ -279,11 +286,12 @@ static struct PyMethodDef msvcrt_functions[] = {
 | 
			
		|||
	{"getche",		msvcrt_getche, METH_VARARGS},
 | 
			
		||||
	{"putch",		msvcrt_putch, METH_VARARGS},
 | 
			
		||||
	{"ungetch",		msvcrt_ungetch, METH_VARARGS},
 | 
			
		||||
#ifdef _WCONIO_DEFINED
 | 
			
		||||
	{"getwch",		msvcrt_getwch, METH_VARARGS},
 | 
			
		||||
	{"getwche",		msvcrt_getwche, METH_VARARGS},
 | 
			
		||||
	{"putwch",		msvcrt_putwch, METH_VARARGS},
 | 
			
		||||
	{"ungetwch",		msvcrt_ungetwch, METH_VARARGS},
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
	{NULL,			NULL}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -467,13 +467,6 @@ Py_NO_ENABLE_SHARED to find out.  Also support MS_NO_COREDLL for b/w compat */
 | 
			
		|||
/* Define to `unsigned' if <sys/types.h> doesn't define.  */
 | 
			
		||||
/* #undef size_t */
 | 
			
		||||
 | 
			
		||||
/* Define to `int' if <sys/types.h> doesn't define.  */
 | 
			
		||||
#if _MSC_VER + 0 >= 1300
 | 
			
		||||
/* VC.NET typedefs socklen_t in ws2tcpip.h. */
 | 
			
		||||
#else
 | 
			
		||||
#define socklen_t int
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Define if you have the ANSI C header files.  */
 | 
			
		||||
#define STDC_HEADERS 1
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue