SF patch #418147 Fixes to allow compiling w/ Borland, from Stephen Hansen.
diff --git a/Include/pyport.h b/Include/pyport.h
index 852efb8..2a59fa1 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -434,6 +434,15 @@
#endif
#endif
+/*
+ * Rename some functions for the Borland compiler
+ */
+#ifdef __BORLANDC__
+# include <io.h>
+# define _chsize chsize
+# define _setmode setmode
+#endif
+
#ifdef __cplusplus
}
#endif
diff --git a/Misc/NEWS b/Misc/NEWS
index 2290a10..d69c45f 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -105,6 +105,10 @@
pprint.isreadable() return sensible results. Also verifies that simple
cases produce correct output.
+New platforms
+
+- Python should compile and run out of the box using the Borland C
+ compiler (under Windows), thanks to Stephen Hansen.
What's New in Python 2.1 (final)?
=================================
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 430a44a..3a85798 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -63,12 +63,6 @@
#ifdef __BORLANDC__ /* Borland compiler */
#define HAVE_EXECV 1
#define HAVE_GETCWD 1
-#define HAVE_GETEGID 1
-#define HAVE_GETEUID 1
-#define HAVE_GETGID 1
-#define HAVE_GETPPID 1
-#define HAVE_GETUID 1
-#define HAVE_KILL 1
#define HAVE_OPENDIR 1
#define HAVE_PIPE 1
#define HAVE_POPEN 1
@@ -152,7 +146,11 @@
extern int chdir(const char *);
extern int rmdir(const char *);
#endif
+#ifdef __BORLANDC__
+extern int chmod(const char *, int);
+#else
extern int chmod(const char *, mode_t);
+#endif
extern int chown(const char *, uid_t, gid_t);
extern char *getcwd(char *, int);
extern char *strerror(int);
@@ -5666,18 +5664,18 @@
}
-#if ( defined(_MSC_VER) || defined(__WATCOMC__) ) && !defined(__QNX__)
+#if (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__)) && !defined(__QNX__)
#define INITFUNC initnt
#define MODNAME "nt"
-#else
-#if defined(PYOS_OS2)
+
+#elif defined(PYOS_OS2)
#define INITFUNC initos2
#define MODNAME "os2"
+
#else
#define INITFUNC initposix
#define MODNAME "posix"
#endif
-#endif
DL_EXPORT(void)
INITFUNC(void)
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 0c5c257..0a54a93 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -41,17 +41,19 @@
#else
#ifdef MS_WINDOWS
#include <windows.h>
-#ifdef MS_WIN16
+#if defined(MS_WIN16) || defined(__BORLANDC__)
/* These overrides not needed for Win32 */
#define timezone _timezone
#define tzname _tzname
#define daylight _daylight
+#endif /* MS_WIN16 || __BORLANDC__ */
+#ifdef MS_WIN16
#define altzone _altzone
#endif /* MS_WIN16 */
#endif /* MS_WINDOWS */
#endif /* !__WATCOMC__ || __QNX__ */
-#if defined(MS_WIN32) && !defined(MS_WIN64)
+#if defined(MS_WIN32) && !defined(MS_WIN64) && !defined(__BORLANDC__)
/* Win32 has better clock replacement
XXX Win64 does not yet, but might when the platform matures. */
#include <largeint.h>
@@ -146,7 +148,7 @@
}
#endif /* HAVE_CLOCK */
-#if defined(MS_WIN32) && !defined(MS_WIN64)
+#if defined(MS_WIN32) && !defined(MS_WIN64) && !defined(__BORLANDC__)
/* Due to Mark Hammond */
static PyObject *
time_clock(PyObject *self, PyObject *args)
diff --git a/PC/config.h b/PC/config.h
index f6ad9c1..e146469 100644
--- a/PC/config.h
+++ b/PC/config.h
@@ -36,6 +36,7 @@
#include <io.h>
#define HAVE_LIMITS_H
+#define HAVE_SYS_UTIME_H
#define HAVE_HYPOT
#define DONT_HAVE_SIG_ALARM
#define DONT_HAVE_SIG_PAUSE
@@ -177,6 +178,10 @@
#define LONG_LONG __int64
#undef HAVE_HYPOT
+#undef HAVE_SYS_UTIME_H
+#define HAVE_UTIME_H
+#define HAVE_DIRENT_H
+#define HAVE_CLOCK
#else /* !_WIN32 */
#error "Only Win32 and later are supported"
@@ -593,7 +598,7 @@
/* #define HAVE_SYS_UN_H 1 */
/* Define if you have the <sys/utime.h> header file. */
-#define HAVE_SYS_UTIME_H 1
+/* #define HAVE_SYS_UTIME_H 1 */
/* Define if you have the <sys/utsname.h> header file. */
/* #define HAVE_SYS_UTSNAME_H 1 */