]> granicus.if.org Git - python/commitdiff
Merged revisions 64214 via svnmerge from
authorAmaury Forgeot d'Arc <amauryfa@gmail.com>
Fri, 13 Jun 2008 01:09:34 +0000 (01:09 +0000)
committerAmaury Forgeot d'Arc <amauryfa@gmail.com>
Fri, 13 Jun 2008 01:09:34 +0000 (01:09 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r64214 | amaury.forgeotdarc | 2008-06-13 02:42:22 +0200 (ven., 13 juin 2008) | 6 lines

  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)
........

Include/pythonrun.h
Modules/errnomodule.c
Modules/socketmodule.c
Modules/socketmodule.h
PC/VC6/_socket.dsp
PC/VC6/pythoncore.dsp
PC/getpathp.c
PC/msvcrtmodule.c
PC/pyconfig.h

index c0cf2638c8d0f59cb676bee03731ee89501f03b8..e57b7f0abbf2dd4c26aa40dfe8aa6203dd59c846 100644 (file)
@@ -154,7 +154,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
index 227e24bdfd55ec2e1a069cd14064cc70d2cbabcc..d5fe46057ace75f298b298eb7aae1f01b8db200b 100644 (file)
@@ -6,7 +6,7 @@
 /* Windows socket errors (WSA*)  */
 #ifdef MS_WINDOWS
 #define WIN32_LEAN_AND_MEAN
-#include <winsock.h>
+#include <windows.h>
 #endif
 
 /*
index 3f94ebc5362d2700cf6e827157a1392f52fe5de5..b948132d1a47e738ed272cee8383343b95ff8100 100644 (file)
@@ -2628,7 +2628,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)
 {
@@ -2677,7 +2677,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
index 114084cea7d9e613e8c236edc8812bacd33fe5d2..a24110f76dce99939b981798b64da34b6e551ee1 100644 (file)
 # endif
 
 #else /* MS_WINDOWS */
-#if _MSC_VER >= 1300
 # include <winsock2.h>
 # include <ws2tcpip.h>
-# include <MSTcpIP.h> /* for SIO_RCVALL */
-# define HAVE_ADDRINFO
-# define HAVE_SOCKADDR_STORAGE
-# define HAVE_GETADDRINFO
-# define HAVE_GETNAMEINFO
-# define ENABLE_IPV6
-#else
-# define WIN32_LEAN_AND_MEAN
-# include <winsock.h>
-#endif
-#endif
+/* 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
+typedef int socklen_t;
+# endif /* IPPROTO_IPV6 */
+#endif /* MS_WINDOWS */
 
 #ifdef HAVE_SYS_UN_H
 # include <sys/un.h>
index 85d2bf018553a107955069c1eec5e9de3e68ad0b..4e8405566228d9b67ac39b6d8f1d94be923189a2 100644 (file)
@@ -54,7 +54,7 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo\r
 LINK32=link.exe\r
 # 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\r
-# 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"\r
+# 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"\r
 # SUBTRACT LINK32 /pdb:none\r
 \r
 !ELSEIF  "$(CFG)" == "_socket - Win32 Debug"\r
@@ -82,7 +82,7 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo\r
 LINK32=link.exe\r
 # 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\r
-# 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\r
+# 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\r
 # SUBTRACT LINK32 /pdb:none\r
 \r
 !ENDIF \r
index fde4be309ad2e1da6ceb55e549f53a280472b2fb..80d0220a72dcfa88bccb506e5c0ecea5eec9d746 100644 (file)
@@ -97,6 +97,10 @@ SOURCE=..\..\Modules\_bisectmodule.c
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=..\..\Modules\_bytesio.c\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=..\..\Modules\cjkcodecs\_codecs_cn.c\r
 # End Source File\r
 # Begin Source File\r
@@ -137,10 +141,6 @@ SOURCE=..\..\Modules\_fileio.c
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\Modules\_bytesio.c\r
-# End Source File\r
-# Begin Source File\r
-\r
 SOURCE=..\..\Modules\_functoolsmodule.c\r
 # End Source File\r
 # Begin Source File\r
@@ -245,6 +245,10 @@ SOURCE=..\..\Objects\boolobject.c
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=..\..\Objects\bytearrayobject.c\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=..\..\Objects\bytes_methods.c\r
 # End Source File\r
 # Begin Source File\r
@@ -281,10 +285,6 @@ SOURCE=..\..\Objects\codeobject.c
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\Modules\_collectionsmodule.c\r
-# End Source File\r
-# Begin Source File\r
-\r
 SOURCE=..\..\Python\compile.c\r
 # End Source File\r
 # Begin Source File\r
@@ -365,10 +365,6 @@ SOURCE=..\..\Objects\floatobject.c
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\Python\formatter_string.c\r
-# End Source File\r
-# Begin Source File\r
-\r
 SOURCE=..\..\Python\formatter_unicode.c\r
 # End Source File\r
 # Begin Source File\r
@@ -377,10 +373,6 @@ SOURCE=..\..\Objects\frameobject.c
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\Python\formatter_unicode.c\r
-# End Source File\r
-# Begin Source File\r
-\r
 SOURCE=..\..\Python\frozen.c\r
 # End Source File\r
 # Begin Source File\r
@@ -659,10 +651,6 @@ SOURCE=..\..\Objects\sliceobject.c
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\Objects\stringobject.c\r
-# End Source File\r
-# Begin Source File\r
-\r
 SOURCE=..\..\Python\structmember.c\r
 # End Source File\r
 # Begin Source File\r
index e2beec1e8bd960d2a2b12df4ebf35bdab2418651..669ed9f0b375df9c61ff0b2cf2904ba5625126a5 100644 (file)
@@ -117,8 +117,7 @@ reduce(wchar_t *dir)
 static int
 exists(wchar_t *filename)
 {
-       struct _stat64 buf;
-       return _wstat64(filename, &buf) == 0;
+       return GetFileAttributesW(filename) != 0xFFFFFFFF;
 }
 
 /* Assumes 'filename' MAXPATHLEN+1 bytes long - 
index 225121f6424f63dd2d408e022d513c231ef4aef3..542b4f73016425f4c8cdd214711b612e618e4a38 100755 (executable)
@@ -145,7 +145,7 @@ msvcrt_getch(PyObject *self, PyObject *args)
        return PyBytes_FromStringAndSize(s, 1);
 }
 
-#if _MSC_VER >= 1300
+#ifdef _WCONIO_DEFINED
 static PyObject *
 msvcrt_getwch(PyObject *self, PyObject *args)
 {
@@ -179,7 +179,7 @@ msvcrt_getche(PyObject *self, PyObject *args)
        return PyBytes_FromStringAndSize(s, 1);
 }
 
-#if _MSC_VER >= 1300
+#ifdef _WCONIO_DEFINED
 static PyObject *
 msvcrt_getwche(PyObject *self, PyObject *args)
 {
@@ -210,8 +210,7 @@ msvcrt_putch(PyObject *self, PyObject *args)
        return Py_None;
 }
 
-
-#if _MSC_VER >= 1300
+#ifdef _WCONIO_DEFINED
 static PyObject *
 msvcrt_putwch(PyObject *self, PyObject *args)
 {
@@ -246,7 +245,7 @@ msvcrt_ungetch(PyObject *self, PyObject *args)
        return Py_None;
 }
 
-#if _MSC_VER >= 1300
+#ifdef _WCONIO_DEFINED
 static PyObject *
 msvcrt_ungetwch(PyObject *self, PyObject *args)
 {
@@ -349,7 +348,7 @@ static struct PyMethodDef msvcrt_functions[] = {
        {"CrtSetReportMode",    msvcrt_setreportmode, METH_VARARGS},
        {"set_error_mode",      msvcrt_seterrormode, METH_VARARGS},
 #endif
-#if _MSC_VER >= 1300
+#ifdef _WCONIO_DEFINED
        {"getwch",              msvcrt_getwch, METH_VARARGS},
        {"getwche",             msvcrt_getwche, METH_VARARGS},
        {"putwch",              msvcrt_putwch, METH_VARARGS},
index 0a27ff0cf85274834ecb18e53b7730e3ab41fed0..987c3261d9dc05411861263608fe39777dbbcd83 100644 (file)
@@ -463,13 +463,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