summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1998-09-28 22:02:40 (GMT)
committerGuido van Rossum <guido@python.org>1998-09-28 22:02:40 (GMT)
commite8afe516ab841977dd73a80bf4ed334781d25dda (patch)
tree5cb40d7d38a7924471c4bf9590c6e39b493167c4
parentbe70450f03980fc681ffa06e47511bf2418955c0 (diff)
downloadcpython-e8afe516ab841977dd73a80bf4ed334781d25dda.zip
cpython-e8afe516ab841977dd73a80bf4ed334781d25dda.tar.gz
cpython-e8afe516ab841977dd73a80bf4ed334781d25dda.tar.bz2
New set of files for the OS/2 port by Jeff Rush.
-rw-r--r--PC/os2vacpp/_tkinter.def8
-rw-r--r--PC/os2vacpp/config.c2
-rw-r--r--PC/os2vacpp/config.h696
-rw-r--r--PC/os2vacpp/makefile51
-rw-r--r--PC/os2vacpp/python.def833
-rw-r--r--PC/os2vacpp/readme.txt228
6 files changed, 757 insertions, 1061 deletions
diff --git a/PC/os2vacpp/_tkinter.def b/PC/os2vacpp/_tkinter.def
new file mode 100644
index 0000000..49dab8d
--- /dev/null
+++ b/PC/os2vacpp/_tkinter.def
@@ -0,0 +1,8 @@
+LIBRARY _TKINTER INITINSTANCE TERMINSTANCE
+DESCRIPTION 'Python Extension DLL v1.0 for Access to Tcl/Tk Environment'
+PROTMODE
+DATA MULTIPLE NONSHARED
+
+EXPORTS
+ init_tkinter
+
diff --git a/PC/os2vacpp/config.c b/PC/os2vacpp/config.c
index 3e7adf9..11caad2 100644
--- a/PC/os2vacpp/config.c
+++ b/PC/os2vacpp/config.c
@@ -50,7 +50,6 @@ extern void initos2();
extern void initoperator();
extern void initposix();
extern void initregex();
-extern void initreop();
extern void initrgbimg();
extern void initrotor();
extern void initsignal();
@@ -97,7 +96,6 @@ struct _inittab _PyImport_Inittab[] = {
#endif
{"operator", initoperator},
{"regex", initregex},
- {"reop", initreop},
// {"rgbimg", initrgbimg},
// {"rotor", initrotor},
{"signal", initsignal},
diff --git a/PC/os2vacpp/config.h b/PC/os2vacpp/config.h
index 373d009..e7901e3 100644
--- a/PC/os2vacpp/config.h
+++ b/PC/os2vacpp/config.h
@@ -4,10 +4,9 @@
/**********************************************************************
* config.h. NOT Generated automatically by configure.
*
- * This is a manually maintained version used for the Watcom,
- * Borland and Microsoft Visual C++ compilers on the MS Windows
- * platform, and the IBM VisualAge C/C++ compiler on the OS/2
- * platform. It is a standard part of the Python distribution.
+ * This is a manually maintained version used for the IBM VisualAge
+ * C/C++ compiler on the OS/2 platform. It is a standard part of
+ * the Python distribution.
*
* FILESYSTEM DEFINES:
* The code specific to a particular way of naming files and
@@ -17,28 +16,12 @@
* DOSFILESYS PCDOS-Style (for PCDOS, Windows and OS/2)
* MACFILESYS Macintosh-Style
* UNIXFILESYS Unix-Style
- * AMIGAFILESYS AmigaDOS-Style (to-be-supported)
+ * AMIGAFILESYS AmigaDOS-Style
*
* Because of the different compilers and operating systems in
* use on the Intel platform, neither the compiler name nor
* the operating system name is sufficient.
*
- * WINDOWS DEFINES:
- * The code specific to Windows should be wrapped around one of
- * the following #defines
- *
- * MS_WIN32 - Code specific to the MS Win32 API
- * MS_WIN16 - Code specific to the old 16 bit Windows API.
- * MS_WINDOWS - Code specific to Windows, but all versions.
- * MS_COREDLL - Code if the Python core is built as a DLL.
- *
- * Note that the old defines "NT" and "WIN32" are still supported, but
- * will soon be dropped.
- *
- * Also note that neither "_M_IX86" or "_MSC_VER" should be used for
- * any purpose other than "Windows Intel x86 specific" and "Microsoft
- * compiler specific". Therefore, these should be very rare.
- *
* OS/2 DEFINES:
* The code specific to OS/2's Program API should be wrapped around
*
@@ -64,565 +47,156 @@
#include <io.h>
-#define HAVE_LIMITS_H
-#define HAVE_HYPOT
-#define DONT_HAVE_SIG_ALARM
-#define DONT_HAVE_SIG_PAUSE
-
-#define LONG_BIT 32
-
/* Configuration Options for Finding Modules */
#define PREFIX ""
#define EXEC_PREFIX ""
+/* Provide a default library so writers of extension modules
+ * won't have to explicitly specify it anymore
+ */
+#pragma library("Python15.lib")
+
/***************************************************/
/* 32-Bit IBM VisualAge C/C++ v3.0 for OS/2 */
/* (Convert Compiler Flags into Useful Switches) */
/***************************************************/
-#if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__)
-
- #define COMPILER "[VisualAge C/C++]"
- #define PYOS_OS2 /* Define Indicator of Operating System */
- #define PYCC_VACPP /* Define Indicator of C Compiler */
+#define PLATFORM "os2"
+#define COMPILER "[VisualAge C/C++]"
+#define PYOS_OS2 /* Define Indicator of Operating System */
+#define PYCC_VACPP /* Define Indicator of C Compiler */
/* Platform Filesystem */
- #define PYTHONPATH ".;.\\lib;.\\lib\\plat-win;.\\lib\\dos-8x3;.\\lib\\lib-tk"
- #define DOSFILESYS /* OS/2 Uses the DOS File Naming Conventions */
- /* #define IMPORT_8x3_NAMES */
+#define PYTHONPATH ".;.\\lib;.\\lib\\plat-win;.\\lib\\lib-tk"
+#define DOSFILESYS /* OS/2 Uses the DOS File Naming Conventions */
+/* #define IMPORT_8x3_NAMES (let's move up to long filenames) */
/* Platform CPU-Mode Dependencies */
- #define WORD_BIT 32 /* OS/2 is a 32-Bit Operating System */
+#define WORD_BIT 32 /* OS/2 is a 32-Bit Operating System */
+#define LONG_BIT 32
+#define SIZEOF_INT 4 /* Count of Bytes in an (int) */
+#define SIZEOF_LONG 4 /* Count of Bytes in a (long) */
+#define SIZEOF_VOID_P 4 /* Count of Bytes in a (void *) */
+/* #define HAVE_LONG_LONG 1 */ /* VAC++ does not support (long long) */
+/* #define SIZEOF_LONG_LONG 8 */ /* Count of Bytes in a (long long) */
+
+/* Define if type char is unsigned and you are not using gcc. */
+#ifndef __CHAR_UNSIGNED__
+/* #undef __CHAR_UNSIGNED__ */
+#endif
- typedef int mode_t;
- typedef int uid_t;
- typedef int gid_t;
- typedef int pid_t;
+typedef int mode_t;
+typedef int uid_t;
+typedef int gid_t;
+typedef int pid_t;
- #if defined(__MULTI__) /* If Compiler /Gt+ Multithread Option Enabled, */
- #define WITH_THREAD /* Then Enable Threading Throughout Python */
- #define OS2_THREADS /* And Use the OS/2 Flavor of Threads */
- #endif
+#if defined(__MULTI__) /* If Compiler /Gt+ Multithread Option Enabled, */
+ #define WITH_THREAD 1 /* Enable Threading Throughout Python */
+ #define OS2_THREADS 1 /* And Use the OS/2 Flavor of Threads */
+/* #define _REENTRANT 1 */ /* Use thread-safe errno, h_errno, and other fns */
+#endif
/* Compiler Runtime Library Capabilities */
#include <ctype.h>
#include <direct.h>
-
- /* #define VA_LIST_IS_ARRAY */
- #define HAVE_CLOCK /* We support all of the Unix clock() API */
- #define HAVE_STRFTIME /* We have a strftime() formatting function */
- #define HAVE_PUTENV /* We have a putenv() function */
- #define HAVE_SYS_SELECT_H /* We have sys/select.h (under TCP/IP dirs) */
- #define HAVE_PROTOTYPES /* Our Compiler Supports C Function Prototypes */
-
- #ifdef USE_DL_EXPORT
- #define DL_IMPORT(RTYPE) RTYPE _Export
- #endif
-
-#endif /* VAC++ for OS/2 */
-
-/***************************************************/
-/* 32-Bit Microsoft Visual C/C++ v2.0+ for Windows */
-/* (Convert Compiler Flags into Useful Switches) */
-/***************************************************/
-#if defined(_MSC_VER) && _MSC_VER > 850
- /* Start of defines for MS_WIN32 using VC++ 2.0 and up */
- #define NT /* NT is obsolete - please use MS_WIN32 instead */
- #define MS_WIN32
- #define MS_WINDOWS
-
- /* For NT the Python core is in a DLL by default. Test the
- * standard macro MS_COREDLL to find out. If you have an exception
- * you must define MS_NO_COREDLL (do not test this macro)
- */
- #ifndef MS_NO_COREDLL
- #define MS_COREDLL /* Python core is in a DLL */
- #ifndef USE_DL_EXPORT
- #define USE_DL_IMPORT
- #endif /* !USE_DL_EXPORT */
- #endif /* !MS_NO_COREDLL */
-
- #ifdef _M_IX86
- #define COMPILER "[MSC 32 bit (Intel)]"
- #else
- #define COMPILER "[MSC (Unknown)]"
- #endif
-
- /* Platform Filesystem */
- #define PYTHONPATH ".\\lib;.\\lib\\plat-win;.\\lib\\lib-tk"
- #define DOSFILESYS /* Windows Uses the DOS File Naming Conventions */
-
- /* Platform CPU-Mode Dependencies */
- #define WORD_BIT 32
-
- typedef int pid_t;
- #define hypot _hypot
-
- /* Compiler Runtime Library Capabilities */
- #pragma warning(disable:4113)
- #include <stdio.h>
-
- #define HAVE_CLOCK /* We support all of the Unix clock() API */
- #define HAVE_STRFTIME /* We have a strftime() formatting function */
- #define NT_THREADS
- #define WITH_THREAD
-
- #ifndef NETSCAPE_PI
- #define USE_SOCKET
- #endif
-
- #ifdef USE_DL_IMPORT
- #define DL_IMPORT(RTYPE) __declspec(dllimport) RTYPE
- #endif
-
- #ifdef USE_DL_EXPORT
- #define DL_IMPORT(RTYPE) __declspec(dllexport) RTYPE
- #endif
-#endif /* _MSC_VER && > 850 */
-
-/***************************************************/
-/* 16-Bit Microsoft Visual C/C++ v1.5+ for Windows */
-/* (Convert Compiler Flags into Useful Switches) */
-/***************************************************/
-#if defined(_MSC_VER) && _MSC_VER <= 850
- #define COMPILER "[MSC 16-bit]"
- #define MS_WIN16
- #define MS_WINDOWS
-
- /* Platform Filesystem */
- #define PYTHONPATH ".;.\\lib;.\\lib\\win;.\\lib\\dos_8x3"
- #define IMPORT_8x3_NAMES
- #define DOSFILESYS /* Windows Uses the DOS File Naming Conventions */
-
- /* Platform CPU-Mode Dependencies */
- #define WORD_BIT 16
-
- typedef int pid_t;
-
- /* Compiler Runtime Library Capabilities */
- #pragma warning(disable:4113)
- #define memcpy memmove /* memcpy dangerous pointer wrap in Win 3.1 */
- #define hypot _hypot
- #define SIGINT 2
-
-#include <stdio.h>
-
- /* Windows 3.1 will not tolerate any console io in a dll */
-
- #ifdef _USRDLL
- #include <time.h>
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #define stdin ((FILE *)0)
- #define stdout ((FILE *)1)
- #define stderr ((FILE *)2)
-
- #define fflush Py_fflush
- int Py_fflush(FILE *);
-
- #define fgets Py_fgets
- char *Py_fgets(char *, int, FILE *);
-
- #define fileno Py_fileno
- int Py_fileno(FILE *);
-
- #define fprintf Py_fprintf
- int Py_fprintf(FILE *, const char *, ...);
-
- #define printf Py_printf
- int Py_printf(const char *, ...);
-
- #define sscanf Py_sscanf
- int Py_sscanf(const char *, const char *, ...);
-
- clock_t clock();
- void _exit(int);
- void exit(int);
- int sscanf(const char *, const char *, ...);
-
- #ifdef __cplusplus
- }
- #endif
- #endif /* _USRDLL */
-
- #ifndef NETSCAPE_PI
- /* use sockets, but not in a Netscape dll */
- #define USE_SOCKET
- #endif
-#endif /* MS_WIN16 */
-
-/***************************************************/
-/* 32-Bit Watcom C/C++ v?.? for Windows */
-/* (Convert Compiler Flags into Useful Switches) */
-/***************************************************/
-#ifdef __WATCOMC__
- #define COMPILER "[Watcom]"
-
- /* Platform Filesystem */
- #define PYTHONPATH ".;.\\lib;.\\lib\\win;.\\lib\\dos_8x3"
- #define IMPORT_8x3_NAMES
- #define DOSFILESYS /* Watcom Uses the DOS File Naming Conventions */
-
- typedef int mode_t;
- typedef int uid_t;
- typedef int gid_t;
- typedef int pid_t;
-
- #if defined(__NT__)
- #define NT /* NT is obsolete - please use MS_WIN32 instead */
- #define MS_WIN32
- #define MS_WINDOWS
- #define NT_THREADS
- #define USE_SOCKET
- #define WITH_THREAD
- #elif defined(__WINDOWS__)
- #define MS_WIN16
- #define MS_WINDOWS
- #endif
-
- #ifdef M_I386
- #define WORD_BIT 32
- #else
- #define WORD_BIT 16
- #endif
-
- /* Compiler Runtime Library Capabilities */
- #include <ctype.h>
- #include <direct.h>
-
- #define VA_LIST_IS_ARRAY
- #define HAVE_CLOCK
- #define HAVE_STRFTIME
-
- #ifdef USE_DL_EXPORT
- #define DL_IMPORT(RTYPE) RTYPE __export
- #endif
-#endif /* __WATCOMC__ */
-
-/***************************************************/
-/* 32-Bit Borland C/C++ v?.? for Windows */
-/* (Convert Compiler Flags into Useful Switches) */
-/***************************************************/
-/* The Borland compiler defines __BORLANDC__ */
-/* XXX These defines are likely incomplete, but should be easy to fix. */
-#ifdef __BORLANDC__
- #define COMPILER "[Borland]"
-
- /* Platform Filesystem */
- #define PYTHONPATH ".;.\\lib;.\\lib\\win;.\\lib\\dos_8x3"
- #define IMPORT_8x3_NAMES
- #define DOSFILESYS /* Borland Uses the DOS File Naming Conventions */
-
- /* Compiler Runtime Library Capabilities */
- #define HAVE_CLOCK
- #define HAVE_STRFTIME
-
- #ifdef USE_DL_IMPORT
- #define DL_IMPORT(RTYPE) RTYPE __import
- #endif
-#endif /* BORLANDC */
-
-/********************************/
-/* End of compilers - finish up */
-/********************************/
-
-/****************************************
- * Adjustments for the Operating System
- ****************************************/
-#ifdef MS_WIN32
- #define PLATFORM "win32"
-#else
- #ifdef MS_WIN16
- #define PLATFORM "win16"
- #else
- #ifdef PYOS_OS2
- #define PLATFORM "os2"
- #else
- #define PLATFORM "dos"
- #endif
- #endif /* !MS_WIN16 */
-#endif /* !MS_WIN32 */
-
-/****************************************
- * Supported Features in Runtime API
- ****************************************/
-
-/* Define if on AIX 3.
- System headers sometimes define this.
- We just want to avoid a redefinition error message. */
-#ifndef _ALL_SOURCE
-/* #undef _ALL_SOURCE */
+/* #undef BAD_STATIC_FORWARD */ /* if compiler botches static fwd decls */
+
+#define STDC_HEADERS 1 /* VAC++ is an ANSI C Compiler */
+#define HAVE_LIMITS_H 1 /* #include <limits.h> */
+#define HAVE_STDLIB_H 1 /* #include <stdlib.h> */
+#define HAVE_HYPOT 1 /* hypot() */
+#define HAVE_PUTENV 1 /* putenv() */
+#define HAVE_STDDEF_H 1 /* #include <stddef.h> */
+/* #define VA_LIST_IS_ARRAY 1 */ /* if va_list is an array of some kind */
+
+ /* Variable-Arguments/Prototypes */
+#define HAVE_PROTOTYPES 1 /* VAC++ supports C Function Prototypes */
+#define HAVE_STDARG_H 1 /* #include <stdarg.h> */
+#define HAVE_STDARG_PROTOTYPES 1 /* Our <stdarg.h> has prototypes */
+
+ /* String/Memory/Locale Operations */
+#define HAVE_STRDUP 1 /* strdup() */
+#define HAVE_MEMMOVE 1 /* memmove() */
+#define HAVE_STRERROR 1 /* strerror() */
+#define HAVE_SETLOCALE 1 /* setlocale() */
+#define HAVE_LOCALE_H 1 /* #include <locale.h> */
+#define MALLOC_ZERO_RETURNS_NULL 1 /* Our malloc(0) returns a NULL ptr */
+
+ /* Signal Handling */
+#define RETSIGTYPE void /* Return type of handlers (int or void) */
+#define HAVE_SIGNAL_H 1 /* #include <signal.h> */
+/* #undef WANT_SIGFPE_HANDLER */ /* Handle SIGFPE (see Include/pyfpe.h) */
+/* #define HAVE_ALARM 1 */ /* alarm() */
+/* #define HAVE_SIGINTERRUPT 1 */ /* siginterrupt() */
+/* #define HAVE_SIGRELSE 1 */ /* sigrelse() */
+#define DONT_HAVE_SIG_ALARM 1
+#define DONT_HAVE_SIG_PAUSE 1
+
+ /* Clock/Time Support */
+#define HAVE_FTIME 1 /* We have ftime() in <sys/timeb.h> */
+#define HAVE_CLOCK 1 /* clock() */
+#define HAVE_STRFTIME 1 /* strftime() */
+#define HAVE_STRPTIME 1 /* strptime() */
+#define HAVE_MKTIME 1 /* mktime() */
+#define HAVE_TZNAME 1 /* No tm_zone but do have tzname[] */
+#define HAVE_TIMES 1 /* #include <sys/times.h> */
+#define HAVE_SYS_UTIME_H 1 /* #include <sys/utime.h> */
+/* #define HAVE_UTIME_H 1 */ /* #include <utime.h> */
+#define HAVE_SYS_TIME_H 1 /* #include <sys/time.h> */
+/* #define TM_IN_SYS_TIME 1 */ /* <sys/time.h> declares struct tm */
+#define HAVE_GETTIMEOFDAY 1 /* gettimeofday() */
+/* #define GETTIMEOFDAY_NO_TZ 1 */ /* gettimeofday() does not have 2nd arg */
+/* #define HAVE_TIMEGM 1 */ /* timegm() */
+#define TIME_WITH_SYS_TIME 1 /* Mix <sys/time.h> and <time.h> */
+#define SYS_SELECT_WITH_SYS_TIME 1 /* Mix <sys/select.h> and <sys/time.h> */
+/* #define HAVE_ALTZONE 1 */ /* if <time.h> defines altzone */
+
+ /* Network/Sockets Support */
+#define HAVE_SYS_SELECT_H 1 /* #include <sys/select.h> */
+#define BSD_SELECT 1 /* Use BSD versus OS/2 form of select() */
+#define HAVE_SELECT 1 /* select() */
+#define HAVE_GETPEERNAME 1 /* getpeername() */
+/* #undef HAVE_GETHOSTNAME_R 1 */ /* gethostname_r() */
+
+ /* File I/O */
+#define HAVE_DUP2 1 /* dup2() */
+#define HAVE_EXECV 1 /* execv() */
+#define HAVE_SETVBUF 1 /* setvbuf() */
+#define HAVE_GETCWD 1 /* getcwd() */
+#define HAVE_PIPE 1 /* pipe() [OS/2-specific code added] */
+#define HAVE_FCNTL_H 1 /* #include <fcntl.h> */
+/* #define HAVE_FLOCK 1 */ /* flock() */
+/* #define HAVE_TRUNCATE 1 */ /* truncate() */
+/* #define HAVE_FTRUNCATE 1 */ /* ftruncate() */
+/* #define HAVE_LSTAT 1 */ /* lstat() */
+/* #define HAVE_DIRENT_H 1 */ /* #include <dirent.h> */
+/* #define HAVE_OPENDIR 1 */ /* opendir() */
+
+ /* Process Operations */
+#define HAVE_GETPID 1 /* getpid() */
+#define HAVE_SYSTEM 1 /* system() */
+#define HAVE_WAIT 1 /* wait() */
+#define HAVE_KILL 1 /* kill() [OS/2-specific code added] */
+#define HAVE_POPEN 1 /* popen() [OS/2-specific code added] */
+/* #define HAVE_GETPPID 1 */ /* getppid() */
+/* #define HAVE_WAITPID 1 */ /* waitpid() */
+/* #define HAVE_FORK 1 */ /* fork() */
+
+ /* User/Group ID Queries */
+/* #define HAVE_GETEGID 1 */
+/* #define HAVE_GETEUID 1 */
+/* #define HAVE_GETGID 1 */
+/* #define HAVE_GETUID 1 */
+
+ /* Unix-Specific */
+#define HAVE_SYS_UN_H 1 /* #include <sys/un.h> */
+/* #define HAVE_SYS_UTSNAME_H 1 */ /* #include <sys/utsname.h> */
+/* #define HAVE_SYS_WAIT_H 1 */ /* #include <sys/wait.h> */
+/* #define HAVE_UNISTD_H 1 */ /* #include <unistd.h> */
+/* #define HAVE_UNAME 1 */ /* uname () */
+
+#ifdef USE_DL_EXPORT
+ #define DL_IMPORT(RTYPE) RTYPE _System
#endif
-/* Define to empty if the keyword does not work. */
-/* #define const */
-
-/* Define if you have dirent.h. */
-/* #define DIRENT 1 */
-
-/* Define to the type of elements in the array set by `getgroups'.
- Usually this is either `int' or `gid_t'. */
-/* #undef GETGROUPS_T */
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-/* #undef gid_t */
-
-/* Define if your struct tm has tm_zone. */
-/* #undef HAVE_TM_ZONE */
-
-/* Define if you don't have tm_zone but do have the external array
- tzname. */
-#define HAVE_TZNAME
-
-/* Define if on MINIX. */
-/* #undef _MINIX */
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-/* #undef mode_t */
-
-/* Define if you don't have dirent.h, but have ndir.h. */
-/* #undef NDIR */
-
-/* Define to `long' if <sys/types.h> doesn't define. */
-/* #undef off_t */
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-/* #undef pid_t */
-
-/* Define if the system does not provide POSIX.1 features except
- with this defined. */
-/* #undef _POSIX_1_SOURCE */
-
-/* Define if you need to in order for stat and other things to work. */
-/* #undef _POSIX_SOURCE */
-
-/* Define as the return type of signal handlers (int or void). */
-#define RETSIGTYPE void
-
-/* Define to `unsigned' if <sys/types.h> doesn't define. */
-/* #undef size_t */
-
-/* Define if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define if you don't have dirent.h, but have sys/dir.h. */
-/* #undef SYSDIR */
-
-/* Define if you don't have dirent.h, but have sys/ndir.h. */
-/* #undef SYSNDIR */
-
-/* Define if you can safely include both <sys/time.h> and <time.h>. */
-/* #undef TIME_WITH_SYS_TIME */
-
-/* Define if your <sys/time.h> declares struct tm. */
-/* #define TM_IN_SYS_TIME 1 */
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-/* #undef uid_t */
-
-/* Define if the closedir function returns void instead of int. */
-/* #undef VOID_CLOSEDIR */
-
-/* Define if your <unistd.h> contains bad prototypes for exec*()
- (as it does on SGI IRIX 4.x) */
-/* #undef BAD_EXEC_PROTOTYPES */
-
-/* Define if your compiler botches static forward declarations
- (as it does on SCI ODT 3.0) */
-/* #define BAD_STATIC_FORWARD 1 */
-
-/* Define if getpgrp() must be called as getpgrp(0)
- and (consequently) setpgrp() as setpgrp(0, 0). */
-/* #undef GETPGRP_HAVE_ARGS */
-
-/* Define this if your time.h defines altzone */
-/* #define HAVE_ALTZONE */
-
-/* Define if you have the putenv function. */
-#ifdef MS_WIN32
-/* Does this exist on Win16? */
-#define HAVE_PUTENV
-#endif
-
-/* Define if your compiler supports function prototypes */
-#define HAVE_PROTOTYPES
-
-/* Define if you can safely include both <sys/select.h> and <sys/time.h>
- (which you can't on SCO ODT 3.0). */
-/* #undef SYS_SELECT_WITH_SYS_TIME */
-
-/* Define if you want to use SGI (IRIX 4) dynamic linking.
- This requires the "dl" library by Jack Jansen,
- ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
- Don't bother on IRIX 5, it already has dynamic linking using SunOS
- style shared libraries */
-/* #undef WITH_SGI_DL */
-
-/* Define if you want to emulate SGI (IRIX 4) dynamic linking.
- This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
- Sequent Symmetry (Dynix), and Atari ST.
- This requires the "dl-dld" library,
- ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
- as well as the "GNU dld" library,
- ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
- Don't bother on SunOS 4 or 5, they already have dynamic linking using
- shared libraries */
-/* #undef WITH_DL_DLD */
-
-/* Define if you want to compile in rudimentary thread support */
-/* #undef WITH_THREAD */
-
-/* Define if you want to use the GNU readline library */
-/* #define WITH_READLINE 1 */
-
-/* Define if you have clock. */
-#define HAVE_CLOCK
-
-/* Define if you have ftime. */
-#define HAVE_FTIME
-
-/* Define if you have getpeername. */
-#define HAVE_GETPEERNAME
-
-/* Define if you have getpgrp. */
-/* #undef HAVE_GETPGRP */
-
-/* Define if you have getpid. */
-#define HAVE_GETPID
-
-/* Define if you have gettimeofday. */
-/* #undef HAVE_GETTIMEOFDAY */
-
-/* Define if you have getwd. */
-/* #undef HAVE_GETWD */
-
-/* Define if you have lstat. */
-/* #undef HAVE_LSTAT */
-
-/* Define if you have nice. */
-/* #undef HAVE_NICE */
-
-/* Define if you have readlink. */
-/* #undef HAVE_READLINK */
-
-/* Define if you have select. */
-/* #undef HAVE_SELECT */
-
-/* Define if you have setpgid. */
-/* #undef HAVE_SETPGID */
-
-/* Define if you have setpgrp. */
-/* #undef HAVE_SETPGRP */
-
-/* Define if you have setsid. */
-/* #undef HAVE_SETSID */
-
-/* Define if you have setvbuf. */
-#define HAVE_SETVBUF
-
-/* Define if you have siginterrupt. */
-/* #undef HAVE_SIGINTERRUPT */
-
-/* Define if you have symlink. */
-/* #undef HAVE_SYMLINK */
-
-/* Define if you have tcgetpgrp. */
-/* #undef HAVE_TCGETPGRP */
-
-/* Define if you have tcsetpgrp. */
-/* #undef HAVE_TCSETPGRP */
-
-/* Define if you have times. */
-#define HAVE_TIMES
-
-/* Define if you have uname. */
-/* #undef HAVE_UNAME */
-
-/* Define if you have waitpid. */
-/* #undef HAVE_WAITPID */
-
-/* Define if you have the <dlfcn.h> header file. */
-/* #undef HAVE_DLFCN_H */
-
-/* Define if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* Define if you have the <stdarg.h> header file. */
-#define HAVE_STDARG_H 1
-
-/* Define if you have the <stdarg.h> prototypes. */
-#define HAVE_STDARG_PROTOTYPES 1
-
-/* Define if malloc(0) returns a NULL pointer */
-#define MALLOC_ZERO_RETURNS_NULL 1
-
-/* Define if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define if you have the <sys/audioio.h> header file. */
-/* #undef HAVE_SYS_AUDIOIO_H */
-
-/* Define if you have the <sys/param.h> header file. */
-/* #define HAVE_SYS_PARAM_H 1 */
-
-/* Define if you have the <sys/select.h> header file. */
-/* #define HAVE_SYS_SELECT_H 1 */
-
-/* Define if you have the <sys/time.h> header file. */
-/* #define HAVE_SYS_TIME_H 1 */
-
-/* Define if you have the <sys/times.h> header file. */
-/* #define HAVE_SYS_TIMES_H 1 */
-
-/* Define if you have the <sys/un.h> header file. */
-/* #define HAVE_SYS_UN_H 1 */
-
-/* Define if you have the <sys/utime.h> header file. */
-#define HAVE_SYS_UTIME_H 1
-
-/* Define if you have the <sys/utsname.h> header file. */
-/* #define HAVE_SYS_UTSNAME_H 1 */
-
-/* Define if you have the <thread.h> header file. */
-/* #undef HAVE_THREAD_H */
-
-/* Define if you have the <unistd.h> header file. */
-/* #define HAVE_UNISTD_H 1 */
-
-/* Define if you have the <utime.h> header file. */
-/* #define HAVE_UTIME_H 1 */
-
-/* Define if you have the dl library (-ldl). */
-/* #undef HAVE_LIBDL */
-
-/* Define if you have the mpc library (-lmpc). */
-/* #undef HAVE_LIBMPC */
-
-/* Define if you have the nsl library (-lnsl). */
-#define HAVE_LIBNSL 1
-
-/* Define if you have the seq library (-lseq). */
-/* #undef HAVE_LIBSEQ */
-
-/* Define if you have the socket library (-lsocket). */
-#define HAVE_LIBSOCKET 1
-
-/* Define if you have the sun library (-lsun). */
-/* #undef HAVE_LIBSUN */
-
-/* Define if you have the termcap library (-ltermcap). */
-/* #undef HAVE_LIBTERMCAP */
-
-/* Define if you have the termlib library (-ltermlib). */
-/* #undef HAVE_LIBTERMLIB */
-
-/* Define if you have the thread library (-lthread). */
-/* #undef HAVE_LIBTHREAD */
-
#endif /* !Py_CONFIG_H */
diff --git a/PC/os2vacpp/makefile b/PC/os2vacpp/makefile
index d609d50..c60cd80 100644
--- a/PC/os2vacpp/makefile
+++ b/PC/os2vacpp/makefile
@@ -26,6 +26,7 @@
#
# History (Most Recent First)
#
+# 26-Sep-98 jrr Retested and adjusted for building w/Python 1.5.2a1
# 20-Nov-97 jrr Cleaned Up for Applying to Distribution
# 29-Oct-97 jrr Modified for Use with Python 1.5 Alpha 4
# 03-Aug-96 jrr Original for Use with Python 1.4 Release
@@ -48,18 +49,24 @@ ERRS = make.out
# Where to Find the IBM TCP/IP Socket Includes and Libraries
OS2TCPIP = C:\MPTN
+# Where to Find the Tcl/Tk Base Directory for Libs/Includes
+TCLTK = D:\TclTk
+TCLBASE = D:\Tcl7.6\OS2
+TKBASE = D:\Tk4.2\OS2
+
# Where to Put the .OBJ Files, To Keep Them Out of the Way
PATHOBJ = obj
# Search Path for Include Files
-PROJINCLUDE = .;$(OS2TCPIP)\Include;$(PY_INCLUDES)
+PROJINCLUDE = .;$(TCLBASE);$(TKBASE);$(OS2TCPIP)\Include;$(PY_INCLUDES)
# Place to Search for Sources re OpusMAKE Dependency Generator (Commercial)
MKMF_SRCS = $(PY_MODULES)\*.c $(PY_OBJECTS)\*.c $(PY_PARSER)\*.c $(PY_PYTHON)\*.c
#.HDRPATH.c := $(PROJINCLUDE,;= ) $(.HDRPATH.c)
#.PATH.c = .;$(PY_MODULES);$(PY_OBJECTS);$(PY_PARSER);$(PY_PYTHON)
-OTHERLIBS = $(OS2TCPIP)\lib\so32dll.lib $(OS2TCPIP)\lib\tcp32dll.lib
+OTHERLIBS = $(OS2TCPIP)\lib\so32dll.lib $(OS2TCPIP)\lib\tcp32dll.lib \
+ $(TCLTK)\Lib\Tcl76.lib $(TCLTK)\Lib\Tk42.lib
#################
# Inference Rules
@@ -171,7 +178,6 @@ MODULES = \
$(PATHOBJ)\PosixModule.obj \
$(PATHOBJ)\RegexModule.obj \
$(PATHOBJ)\RegExpr.obj \
- $(PATHOBJ)\ReopModule.obj \
$(PATHOBJ)\SelectModule.obj \
$(PATHOBJ)\SignalModule.obj \
$(PATHOBJ)\SocketModule.obj \
@@ -204,6 +210,8 @@ _GEN = /G4 /Gm /Gd-
# /G4 = Generate Code for 486 (Use 386 for Debugger)
# /Gm = Use Multithread Runtime
# /Gd = Dynamically Load Runtime
+ # /Ms = Use _System Calling Convention (vs _Optlink)
+ # (to allow non-VAC++ code to call into Python15.dll)
_OPT = /O /Gl
# /O = Enable Speed-Optimizations
@@ -238,7 +246,8 @@ CFLAGS = $(_BASE) $(_GEN) $(_OPT) $(_DBG) $(_OUT) $(_EXE) /Ss
###################
# Primary Target(s)
###################
-All: obj noise PyCore.lib Python15.lib Python15.dll Python.exe PGen.exe
+All: obj noise PyCore.lib Python15.lib PGen.exe \
+ Python.exe PythonPM.exe Python15.dll _tkinter.dll
Modules: $(MODULES)
Objects: $(OBJECTS)
@@ -257,6 +266,15 @@ noise:
#
##############
+# Python Extension DLL: Tcl/Tk Interface
+_tkinter.dll: $(PATHOBJ)\_tkinter.obj Python15.lib _tkinter.def
+ @ Echo Linking $@ As DLL
+ @ $(CC) $(CFLAGS) /B"/NOE" $(_DLL) /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+
+$(PATHOBJ)\_tkinter.obj: $(PY_MODULES)\_tkinter.c
+ @ Echo Compiling $**
+ @ $(CC) -c $(CFLAGS) $(_DLL) -Fo$@ $** >>$(ERRS)
+
# Object Library of All Essential Python Routines
PyCore.lib: $(MODULES) $(OBJECTS) $(PARSER) $(PYTHON) $(PATHOBJ)\Config.obj
@ Echo Adding Updated Object Files to Link Library $@
@@ -265,6 +283,8 @@ PyCore.lib: $(MODULES) $(OBJECTS) $(PARSER) $(PYTHON) $(PATHOBJ)\Config.obj
Python15.dll: $(PATHOBJ)\Compile.obj PyCore.lib Python.def
@ Echo Linking $@ As DLL
@ $(CC) $(CFLAGS) /B"/NOE" $(_DLL) /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+ @ Echo Compressing $@ with LxLite
+ @ lxlite $@
# IBM Linker Requires One Explicit .OBJ To Build a .DLL from a .LIB
$(PATHOBJ)\Compile.obj: $(PY_PYTHON)\Compile.c
@@ -277,10 +297,15 @@ Python15.lib: Python.def
@ IMPLIB /NOLOGO /NOIGNORE $@ $** >>$(ERRS)
@ ILIB /NOLOGO /CONVFORMAT /NOEXTDICTIONARY /NOBROWSE /NOBACKUP $@; >>$(ERRS)
-# Small Program to Start Interpreter in Python15.dll
+# Small Command-Line Program to Start Interpreter in Python15.dll
Python.exe: $(PATHOBJ)\Python.obj Python15.lib
@ Echo Linking $@ As EXE
- @ $(CC) $(CFLAGS) $(_EXE) /B"/STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+ @ $(CC) $(CFLAGS) $(_EXE) /B"/PM:VIO /STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+
+# Small PM-GUI Program to Start Interpreter in Python15.dll
+PythonPM.exe: $(PATHOBJ)\Python.obj Python15.lib
+ @ Echo Linking $@ As EXE
+ @ $(CC) $(CFLAGS) $(_EXE) /B"/PM:PM /STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
PGen.exe: $(PGEN) PyCore.lib
@ Echo Linking $@ As EXE
@@ -305,6 +330,7 @@ release: Python.exe Python15.dll Python15.lib
-- @Echo Y | copy /U Python.exe D:\EXEs
-- @Echo Y | copy /U Python15.dll D:\DLLs
-- @Echo Y | copy /U Python15.lib E:\Tau\Lib
+ -- @Echo Y | copy /U _tkinter.dll D:\Python
test:
python ..\..\lib\test\regrtest.py
@@ -947,19 +973,6 @@ regexpr.obj: $(PY_INCLUDE)\abstract.h $(PY_PARSER)\assert.h $(PY_INCLUDE)\ceval.
$(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
$(PY_INCLUDE)\tupleobject.h
-reopmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
- $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h config.h \
- $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
- $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
- $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
- $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
- $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
- $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
- $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
- $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
- $(PY_MODULES)\regexpr.h $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
- $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
-
resource.obj: $(PY_INCLUDE)\abstract.h $(OS2TCPIP)\Include\sys\time.h $(PY_INCLUDE)\ceval.h \
$(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
config.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
diff --git a/PC/os2vacpp/python.def b/PC/os2vacpp/python.def
index b671d83..6477536 100644
--- a/PC/os2vacpp/python.def
+++ b/PC/os2vacpp/python.def
@@ -4,369 +4,472 @@ PROTMODE
DATA MULTIPLE NONSHARED
EXPORTS
- ; Data
- PyCFunction_Type
- PyCObject_Type
- PyClass_Type
- PyCode_Type
- PyComplex_Type
- PyDict_Type
- PyExc_ArithmeticError
- PyExc_AttributeError
- PyExc_EOFError
- PyExc_Exception
- PyExc_FloatingPointError
- PyExc_IOError
- PyExc_ImportError
- PyExc_IndexError
- PyExc_KeyError
- PyExc_KeyboardInterrupt
- PyExc_LookupError
- PyExc_MemoryError
- PyExc_NameError
- PyExc_OverflowError
- PyExc_RuntimeError
- PyExc_StandardError
- PyExc_SyntaxError
- PyExc_SystemError
- PyExc_SystemExit
- PyExc_TypeError
- PyExc_ValueError
- PyExc_ZeroDivisionError
- PyFile_Type
- PyFloat_Type
- PyFrame_Type
- PyFunction_Type
- PyInstance_Type
- PyInt_Type
- PyList_Type
- PyLong_Type
- PyMethod_Type
- PyModule_Type
- PyOS_InputHook
- PyOS_ReadlineFunctionPointer
- PyRange_Type
- PySlice_Type
- PyString_Type
- PyTuple_Type
- PyType_Type
- Py_DebugFlag
- Py_InteractiveFlag
- Py_NoSiteFlag
- Py_UseClassExceptionsFlag
- Py_VerboseFlag
- _PyParser_Grammar
- _PyParser_TokenNames
- _PyThread_Started
- _Py_EllipsisObject
- _Py_NoneStruct
- _Py_TrueStruct
- _Py_ZeroStruct
+ ; Data
+ PyCFunction_Type
+ PyCObject_Type
+ PyClass_Type
+ PyCode_Type
+ PyComplex_Type
+ PyDict_Type
+ PyExc_ArithmeticError
+ PyExc_AssertionError
+ PyExc_AttributeError
+ PyExc_EOFError
+ PyExc_EnvironmentError
+ PyExc_Exception
+ PyExc_FloatingPointError
+ PyExc_IOError
+ PyExc_ImportError
+ PyExc_IndexError
+ PyExc_KeyError
+ PyExc_KeyboardInterrupt
+ PyExc_LookupError
+ PyExc_MemoryError
+ PyExc_MemoryErrorInst
+ PyExc_NameError
+ PyExc_OSError
+ PyExc_OverflowError
+ PyExc_RuntimeError
+ PyExc_StandardError
+ PyExc_SyntaxError
+ PyExc_SystemError
+ PyExc_SystemExit
+ PyExc_TypeError
+ PyExc_ValueError
+ PyExc_ZeroDivisionError
+ PyFile_Type
+ PyFloat_Type
+ PyFrame_Type
+ PyFunction_Type
+ PyImport_FrozenModules
+ PyImport_Inittab
+ PyInstance_Type
+ PyInt_Type
+ PyList_Type
+ PyLong_Type
+ PyMethod_Type
+ PyModule_Type
+ PyOS_InputHook
+ PyOS_ReadlineFunctionPointer
+ PyRange_Type
+ PySlice_Type
+ PyString_Type
+ PyTraceBack_Type
+ PyTuple_Type
+ PyType_Type
+ Py_DebugFlag
+ Py_FrozenFlag
+ Py_InteractiveFlag
+ Py_NoSiteFlag
+ Py_OptimizeFlag
+ Py_TabcheckFlag
+ Py_UseClassExceptionsFlag
+ Py_VerboseFlag
+ _PyImport_Filetab
+ _PyImport_Inittab
+ _PyParser_Grammar
+ _PyParser_TokenNames
+ _PyThread_Started
+ _Py_EllipsisObject
+ _Py_NoneStruct
+ _Py_PackageContext
+ _Py_TrueStruct
+ _Py_ZeroStruct
+ _Py_abstract_hack
+ _Py_cobject_hack
+ _Py_re_syntax
+ _Py_re_syntax_table
+
+ ; Code
+ PyArg_Parse
+ PyArg_ParseTuple
+ PyArg_ParseTupleAndKeywords
+ PyArg_VaParse
+ PyCFunction_Fini
+ PyCFunction_GetFlags
+ PyCFunction_GetFunction
+ PyCFunction_GetSelf
+ PyCFunction_New
+ PyCObject_AsVoidPtr
+ PyCObject_FromVoidPtrAndDesc
+ PyCObject_FromVoidPtr
+ PyCObject_GetDesc
+ PyCObject_Import
+ PyCallable_Check
+ PyClass_IsSubclass
+ PyClass_New
+ PyCode_Addr2Line
+ PyCode_New
+ PyComplex_AsCComplex
+ PyComplex_FromCComplex
+ PyComplex_FromDoubles
+ PyComplex_ImagAsDouble
+ PyComplex_RealAsDouble
+ PyDict_Clear
+ PyDict_DelItem
+ PyDict_DelItemString
+ PyDict_GetItem
+ PyDict_GetItemString
+ PyDict_Items
+ PyDict_Keys
+ PyDict_New
+ PyDict_Next
+ PyDict_SetItem
+ PyDict_SetItemString
+ PyDict_Size
+ PyDict_Values
+ PyErr_BadArgument
+ PyErr_BadInternalCall
+ PyErr_CheckSignals
+ PyErr_Clear
+ PyErr_ExceptionMatches
+ PyErr_Fetch
+ PyErr_Format
+ PyErr_GivenExceptionMatches
+ PyErr_NewException
+ PyErr_NoMemory
+ PyErr_NormalizeException
+ PyErr_Occurred
+ PyErr_Print
+ PyErr_PrintEx
+ PyErr_Restore
+ PyErr_SetFromErrno
+ PyErr_SetFromErrnoWithFilename
+ PyErr_SetInterrupt
+ PyErr_SetNone
+ PyErr_SetObject
+ PyErr_SetString
+ PyEval_AcquireLock
+ PyEval_AcquireThread
+ PyEval_CallFunction
+ PyEval_CallMethod
+ PyEval_CallObject
+ PyEval_CallObjectWithKeywords
+ PyEval_EvalCode
+ PyEval_GetBuiltins
+ PyEval_GetFrame
+ PyEval_GetGlobals
+ PyEval_GetLocals
+ PyEval_GetRestricted
+ PyEval_InitThreads
+ PyEval_ReleaseLock
+ PyEval_ReleaseThread
+ PyEval_RestoreThread
+ PyEval_SaveThread
+ PyFile_AsFile
+ PyFile_FromFile
+ PyFile_FromString
+ PyFile_GetLine
+ PyFile_Name
+ PyFile_SetBufSize
+ PyFile_SoftSpace
+ PyFile_WriteObject
+ PyFile_WriteString
+ PyFloat_AsDouble
+ PyFloat_AsString
+ PyFloat_Fini
+ PyFloat_FromDouble
+ PyFrame_BlockPop
+ PyFrame_BlockSetup
+ PyFrame_FastToLocals
+ PyFrame_Fini
+ PyFrame_LocalsToFast
+ PyFrame_New
+ PyFunction_GetCode
+ PyFunction_GetDefaults
+ PyFunction_GetGlobals
+ PyFunction_New
+ PyFunction_SetDefaults
+ PyGrammar_AddAccelerators
+ PyGrammar_FindDFA
+ PyGrammar_LabelRepr
+ PyGrammar_RemoveAccelerators
+ PyImport_AddModule
+ PyImport_AppendInittab
+ PyImport_Cleanup
+ PyImport_ExecCodeModule
+ PyImport_ExecCodeModuleEx
+ PyImport_ExtendInittab
+ PyImport_GetMagicNumber
+ PyImport_GetModuleDict
+ PyImport_Import
+ PyImport_ImportFrozenModule
+ PyImport_ImportModule
+ PyImport_ImportModuleEx
+ PyImport_ReloadModule
+ PyInstance_DoBinOp
+ PyInstance_New
+ PyInt_AsLong
+ PyInt_Fini
+ PyInt_FromLong
+ PyInt_GetMax
+ PyInterpreterState_Clear
+ PyInterpreterState_Delete
+ PyInterpreterState_New
+ PyList_Append
+ PyList_AsTuple
+ PyList_GetItem
+ PyList_GetSlice
+ PyList_Insert
+ PyList_New
+ PyList_Reverse
+ PyList_SetItem
+ PyList_SetSlice
+ PyList_Size
+ PyList_Sort
+ PyLong_AsDouble
+ PyLong_AsLong
+; PyLong_AsLongLong
+ PyLong_AsUnsignedLong
+; PyLong_AsUnsignedLongLong
+ PyLong_AsVoidPtr
+ PyLong_FromDouble
+ PyLong_FromLong
+; PyLong_FromLongLong
+ PyLong_FromString
+ PyLong_FromUnsignedLong
+; PyLong_FromUnsignedLongLong
+ PyLong_FromVoidPtr
+ PyMapping_Check
+ PyMapping_GetItemString
+ PyMapping_HasKey
+ PyMapping_HasKeyString
+ PyMapping_Length
+ PyMapping_SetItemString
+ PyMarshal_Init
+ PyMarshal_ReadLongFromFile
+ PyMarshal_ReadObjectFromFile
+ PyMarshal_ReadObjectFromString
+ PyMarshal_WriteLongToFile
+ PyMarshal_WriteObjectToFile
+ PyMarshal_WriteObjectToString
+ PyMem_Free
+ PyMem_Malloc
+ PyMem_Realloc
+ PyMember_Get
+ PyMember_Set
+ PyMethod_Class
+ PyMethod_Fini
+ PyMethod_Function
+ PyMethod_New
+ PyMethod_Self
+ PyModule_GetDict
+ PyModule_GetName
+ PyModule_New
+ PyNode_AddChild
+ PyNode_Compile
+ PyNode_Free
+; PyNode_ListTree
+ PyNode_New
+ PyNumber_Absolute
+ PyNumber_Add
+ PyNumber_And
+ PyNumber_Check
+ PyNumber_Coerce
+ PyNumber_CoerceEx
+ PyNumber_Divide
+ PyNumber_Divmod
+ PyNumber_Float
+ PyNumber_Int
+ PyNumber_Invert
+ PyNumber_Long
+ PyNumber_Lshift
+ PyNumber_Multiply
+ PyNumber_Negative
+ PyNumber_Or
+ PyNumber_Positive
+ PyNumber_Power
+ PyNumber_Remainder
+ PyNumber_Rshift
+ PyNumber_Subtract
+ PyNumber_Xor
+ PyOS_AfterFork
+ PyOS_FiniInterrupts
+ PyOS_GetLastModificationTime
+ PyOS_InitInterrupts
+ PyOS_InterruptOccurred
+ PyOS_Readline
+ PyOS_StdioReadline
+ PyOS_strtol
+ PyOS_strtoul
+ PyObject_CallFunction
+ PyObject_CallMethod
+ PyObject_CallObject
+ PyObject_Cmp
+ PyObject_Compare
+ PyObject_DelItem
+ PyObject_GetAttr
+ PyObject_GetAttrString
+ PyObject_GetItem
+ PyObject_HasAttr
+ PyObject_HasAttrString
+ PyObject_Hash
+ PyObject_IsTrue
+ PyObject_Length
+ PyObject_Not
+ PyObject_Print
+ PyObject_Repr
+ PyObject_SetAttr
+ PyObject_SetAttrString
+ PyObject_SetItem
+ PyObject_Str
+ PyObject_Type
+ PyParser_AddToken
+ PyParser_Delete
+ PyParser_New
+ PyParser_ParseFile
+ PyParser_ParseString
+ PyParser_SimpleParseFile
+ PyParser_SimpleParseString
+ PyRange_New
+ PyRun_AnyFile
+ PyRun_File
+ PyRun_InteractiveLoop
+ PyRun_InteractiveOne
+ PyRun_SimpleFile
+ PyRun_SimpleString
+ PyRun_String
+ PySequence_Check
+ PySequence_Concat
+ PySequence_Contains
+ PySequence_Count
+ PySequence_DelItem
+ PySequence_DelSlice
+ PySequence_GetItem
+ PySequence_GetSlice
+ PySequence_In
+ PySequence_Index
+ PySequence_Length
+ PySequence_List
+ PySequence_Repeat
+ PySequence_SetItem
+ PySequence_SetSlice
+ PySequence_Tuple
+ PySlice_GetIndices
+ PySlice_New
+ PyString_AsString
+ PyString_Concat
+ PyString_ConcatAndDel
+ PyString_Fini
+ PyString_Format
+ PyString_FromString
+ PyString_FromStringAndSize
+ PyString_InternFromString
+ PyString_InternInPlace
+ PyString_Size
+ PySys_GetFile
+ PySys_GetObject
+ PySys_SetArgv
+ PySys_SetObject
+ PySys_SetPath
+ PySys_WriteStderr
+ PySys_WriteStdout
+ PyThreadState_Clear
+ PyThreadState_Delete
+ PyThreadState_Get
+ PyThreadState_GetDict
+ PyThreadState_New
+ PyThreadState_Swap
+ PyThread__exit_thread
+ PyThread_acquire_lock
+ PyThread_allocate_lock
+ PyThread_allocate_sema
+ PyThread_down_sema
+ PyThread_exit_thread
+ PyThread_free_lock
+ PyThread_free_sema
+ PyThread_get_thread_ident
+ PyThread_init_thread
+ PyThread_release_lock
+ PyThread_start_new_thread
+ PyThread_up_sema
+ PyToken_OneChar
+ PyToken_TwoChars
+ PyTokenizer_Free
+ PyTokenizer_FromFile
+ PyTokenizer_FromString
+ PyTokenizer_Get
+ PyTraceBack_Here
+ PyTraceBack_Print
+ PyTuple_Fini
+ PyTuple_GetItem
+ PyTuple_GetSlice
+ PyTuple_New
+ PyTuple_SetItem
+ PyTuple_Size
+ Py_AddPendingCall
+ Py_AtExit
+ Py_BuildValue
+ Py_CompileString
+ Py_EndInterpreter
+ Py_Exit
+ Py_FatalError
+ Py_FdIsInteractive
+ Py_Finalize
+ Py_FindMethod
+ Py_FindMethodInChain
+ Py_FlushLine
+ Py_Free
+ Py_GetArgcArgv
+ Py_GetBuildInfo
+ Py_GetCompiler
+ Py_GetCopyright
+ Py_GetExecPrefix
+ Py_GetPath
+ Py_GetPlatform
+ Py_GetPrefix
+ Py_GetProgramFullPath
+ Py_GetProgramName
+ Py_GetPythonHome
+ Py_GetVersion
+ Py_InitModule4
+ Py_Initialize
+ Py_IsInitialized
+ Py_Main
+ Py_MakePendingCalls
+ Py_Malloc
+ Py_NewInterpreter
+ Py_Realloc
+ Py_ReprEnter
+ Py_ReprLeave
+ Py_SetProgramName
+ Py_SetPythonHome
+ Py_VaBuildValue
+ _PyBuiltin_Fini_1
+ _PyBuiltin_Fini_2
+ _PyBuiltin_Init_1
+ _PyBuiltin_Init_2
+ _PyImport_FindExtension
+ _PyImport_Fini
+ _PyImport_FixupExtension
+ _PyImport_Init
+ _PyImport_LoadDynamicModule
+ _PyLong_New
+ _PyModule_Clear
+ _PyObject_New
+ _PyObject_NewVar
+ _PyString_Resize
+ _PySys_Init
+ _PyTuple_Resize
+ _Py_MD5Final
+ _Py_MD5Init
+ _Py_MD5Update
+; _Py_addbit
+ _Py_c_diff
+ _Py_c_neg
+ _Py_c_pow
+ _Py_c_prod
+ _Py_c_quot
+ _Py_c_sum
+; _Py_delbitset
+; _Py_mergebitset
+; _Py_meta_grammar
+; _Py_newbitset
+ _Py_re_compile_fastmap
+ _Py_re_compile_initialize
+ _Py_re_compile_pattern
+ _Py_re_match
+ _Py_re_search
+ _Py_re_set_syntax
+; _Py_samebitset
- ; Code
- PyArg_Parse
- PyArg_ParseTuple
- PyArg_ParseTupleAndKeywords
- PyArg_VaParse
- PyCFunction_GetFunction
- PyCFunction_GetSelf
- PyCFunction_New
- PyCObject_AsVoidPtr
- PyCObject_FromVoidPtr
- PyCObject_Import
- PyCallable_Check
- PyClass_IsSubclass
- PyClass_New
- PyCode_New
- PyComplex_AsCComplex
- PyComplex_FromCComplex
- PyComplex_FromDoubles
- PyComplex_ImagAsDouble
- PyComplex_RealAsDouble
- PyDict_Clear
- PyDict_DelItem
- PyDict_DelItemString
- PyDict_GetItem
- PyDict_GetItemString
- PyDict_Items
- PyDict_Keys
- PyDict_New
- PyDict_Next
- PyDict_SetItem
- PyDict_SetItemString
- PyDict_Size
- PyDict_Values
- PyErr_BadArgument
- PyErr_BadInternalCall
- PyErr_CheckSignals
- PyErr_Clear
- PyErr_Fetch
- PyErr_Format
- PyErr_NewException
- PyErr_NoMemory
- PyErr_Occurred
- PyErr_Print
- PyErr_Restore
- PyErr_SetFromErrno
- PyErr_SetInterrupt
- PyErr_SetNone
- PyErr_SetObject
- PyErr_SetString
- PyEval_AcquireLock
- PyEval_AcquireThread
- PyEval_CallObject
- PyEval_CallObjectWithKeywords
- PyEval_EvalCode
- PyEval_GetBuiltins
- PyEval_GetFrame
- PyEval_GetGlobals
- PyEval_GetLocals
- PyEval_GetRestricted
- PyEval_InitThreads
- PyEval_ReleaseLock
- PyEval_ReleaseThread
- PyEval_RestoreThread
- PyEval_SaveThread
- PyFile_AsFile
- PyFile_FromFile
- PyFile_FromString
- PyFile_GetLine
- PyFile_Name
- PyFile_SetBufSize
- PyFile_SoftSpace
- PyFile_WriteObject
- PyFile_WriteString
- PyFloat_AsDouble
- PyFloat_AsString
- PyFloat_FromDouble
- PyFrame_BlockPop
- PyFrame_BlockSetup
- PyFrame_FastToLocals
- PyFrame_LocalsToFast
- PyFrame_New
- PyFunction_GetCode
- PyFunction_GetGlobals
- PyFunction_New
- PyGrammar_AddAccelerators
- PyGrammar_FindDFA
- PyGrammar_LabelRepr
- PyImport_AddModule
- PyImport_Cleanup
- PyImport_FrozenModules
- PyImport_GetMagicNumber
- PyImport_GetModuleDict
- PyImport_Import
- PyImport_ImportFrozenModule
- PyImport_ImportModule
- PyImport_ImportModuleEx
- PyImport_ReloadModule
- PyInstance_DoBinOp
- PyInstance_New
- PyInt_AsLong
- PyInt_FromLong
- PyInt_GetMax
- PyInterpreterState_Clear
- PyInterpreterState_Delete
- PyInterpreterState_New
- PyList_Append
- PyList_AsTuple
- PyList_GetItem
- PyList_GetSlice
- PyList_Insert
- PyList_New
- PyList_Reverse
- PyList_SetItem
- PyList_SetSlice
- PyList_Size
- PyList_Sort
- PyLong_AsDouble
- PyLong_AsLong
- PyLong_AsUnsignedLong
- PyLong_FromDouble
- PyLong_FromLong
- PyLong_FromString
- PyLong_FromUnsignedLong
- PyMapping_Check
- PyMapping_GetItemString
- PyMapping_HasKey
- PyMapping_HasKeyString
- PyMapping_Length
- PyMapping_SetItemString
- PyMarshal_Init
- PyMarshal_ReadLongFromFile
- PyMarshal_ReadObjectFromFile
- PyMarshal_ReadObjectFromString
- PyMarshal_WriteLongToFile
- PyMarshal_WriteObjectToFile
- PyMem_Free
- PyMem_Malloc
- PyMem_Realloc
- PyMember_Get
- PyMember_Set
- PyMethod_Class
- PyMethod_Function
- PyMethod_New
- PyMethod_Self
- PyModule_GetDict
- PyModule_GetName
- PyModule_New
- PyNode_AddChild
- PyNode_Compile
- PyNode_Free
- PyNode_New
- PyNumber_Absolute
- PyNumber_Add
- PyNumber_And
- PyNumber_Check
- PyNumber_Coerce
- PyNumber_Divide
- PyNumber_Divmod
- PyNumber_Float
- PyNumber_Int
- PyNumber_Invert
- PyNumber_Long
- PyNumber_Lshift
- PyNumber_Multiply
- PyNumber_Negative
- PyNumber_Or
- PyNumber_Positive
- PyNumber_Power
- PyNumber_Remainder
- PyNumber_Rshift
- PyNumber_Subtract
- PyNumber_Xor
- PyOS_GetLastModificationTime
- PyOS_InitInterrupts
- PyOS_InterruptOccurred
- PyOS_Readline
- PyOS_strtol
- PyOS_strtoul
- PyObject_CallFunction
- PyObject_CallMethod
- PyObject_CallObject
- PyObject_Compare
- PyObject_GetAttr
- PyObject_GetAttrString
- PyObject_GetItem
- PyObject_HasAttrString
- PyObject_Hash
- PyObject_IsTrue
- PyObject_Length
- PyObject_Print
- PyObject_Repr
- PyObject_SetAttr
- PyObject_SetAttrString
- PyObject_SetItem
- PyObject_Str
- PyObject_Type
- PyParser_AddToken
- PyParser_Delete
- PyParser_New
- PyParser_ParseFile
- PyParser_ParseString
- PyParser_SimpleParseFile
- PyParser_SimpleParseString
- PyRange_New
- PyRun_AnyFile
- PyRun_File
- PyRun_InteractiveLoop
- PyRun_InteractiveOne
- PyRun_SimpleFile
- PyRun_SimpleString
- PyRun_String
- PySequence_Check
- PySequence_Concat
- PySequence_Count
- PySequence_GetItem
- PySequence_GetSlice
- PySequence_In
- PySequence_Index
- PySequence_Length
- PySequence_Repeat
- PySequence_SetItem
- PySequence_SetSlice
- PySequence_Tuple
- PySlice_GetIndices
- PySlice_New
- PyString_AsString
- PyString_Concat
- PyString_ConcatAndDel
- PyString_Format
- PyString_FromString
- PyString_FromStringAndSize
- PyString_Size
- PySys_GetFile
- PySys_GetObject
- PySys_SetArgv
- PySys_SetObject
- PySys_SetPath
- PyThreadState_Clear
- PyThreadState_Delete
- PyThreadState_Get
- PyThreadState_New
- PyThreadState_Swap
- PyThread_acquire_lock
- PyThread_allocate_lock
- PyThread_allocate_sema
- PyThread_down_sema
- PyThread_exit_thread
- PyThread_free_lock
- PyThread_free_sema
- PyThread_get_thread_ident
- PyThread_init_thread
- PyThread_release_lock
- PyThread_start_new_thread
- PyThread_up_sema
- PyToken_OneChar
- PyToken_TwoChars
- PyTokenizer_Free
- PyTokenizer_FromFile
- PyTokenizer_FromString
- PyTokenizer_Get
- PyTraceBack_Here
- PyTraceBack_Print
- PyTuple_GetItem
- PyTuple_GetSlice
- PyTuple_New
- PyTuple_SetItem
- PyTuple_Size
- Py_AtExit
- Py_BuildValue
- Py_CompileString
- Py_EndInterpreter
- Py_Exit
- Py_FatalError
- Py_FdIsInteractive
- Py_Finalize
- Py_FindMethod
- Py_FindMethodInChain
- Py_FlushLine
- Py_Free
- Py_FrozenMain
- Py_GetBuildInfo
- Py_GetCopyright
- Py_GetExecPrefix
- Py_GetPath
- Py_GetPrefix
- Py_GetProgramFullPath
- Py_GetProgramName
- Py_GetVersion
- Py_InitModule4
- Py_Initialize
- Py_IsInitialized
- Py_Main
- Py_Malloc
- Py_NewInterpreter
- Py_Realloc
- Py_SetProgramName
- Py_VaBuildValue
- _PyObject_New
- _PyObject_NewVar
- _PyString_Resize
- _Py_c_diff
- _Py_c_neg
- _Py_c_pow
- _Py_c_prod
- _Py_c_quot
- _Py_c_sum
- initimp
diff --git a/PC/os2vacpp/readme.txt b/PC/os2vacpp/readme.txt
index f805232..2da27b9 100644
--- a/PC/os2vacpp/readme.txt
+++ b/PC/os2vacpp/readme.txt
@@ -1,114 +1,114 @@
-IBM VisualAge C/C++ for OS/2
-============================
-
-To build Python for OS/2, change into ./os2vacpp and issue an 'NMAKE'
-command. This will build a PYTHON15.DLL containing the set of Python
-modules listed in config.c and a small PYTHON.EXE to start the
-interpreter.
-
-By changing the C compiler flag /Gd- in the makefile to /Gd+, you can
-reduce the size of these by causing Python to dynamically link to the
-C runtime DLLs instead of including their bulk in your binaries.
-However, this means that any system on which you run Python must have
-the VAC++ compiler installed in order to have those DLLs available.
-
-During the build process you may see a couple of harmless warnings:
-
- From the C Compiler, "No function prototype given for XXX", which
- comes from the use of K&R parameters within Python for portability.
-
- From the ILIB librarian, "Module Not Found (XXX)", which comes
- from its attempt to perform the (-+) operation, which removes and
- then adds a .OBJ to the library. The first time a build is done,
- it obviously cannot remove what is not yet built.
-
-This build includes support for most Python functionality as well as
-TCP/IP sockets. It omits the Posix ability to 'fork' a process but
-supports threads using OS/2 native capabilities. I have tried to
-support everything possible but here are a few usage notes.
-
-
--- os.popen() Usage Warnings
-
-With respect to my implementation of popen() under OS/2:
-
- import os
-
- fd = os.popen("pkzip.exe -@ junk.zip", 'wb')
- fd.write("file1.txt\n")
- fd.write("file2.txt\n")
- fd.write("file3.txt\n")
- fd.write("\x1a") # Should Not Be Necessary But Is
- fd.close()
-
-There is a bug, either in the VAC++ compiler or OS/2 itself, where the
-simple closure of the write-side of a pipe -to- a process does not
-send an EOF to that process. I find I must explicitly write a
-control-Z (EOF) before closing the pipe. This is not a problem when
-using popen() in read mode.
-
-One other slight difference with my popen() is that I return None
-from the close(), instead of the Unix convention of the return code
-of the spawned program. I could find no easy way to do this under
-OS/2.
-
-
--- BEGINLIBPATH/ENDLIBPATH
-
-With respect to environment variables, this OS/2 port supports the
-special-to-OS/2 magic names of 'BEGINLIBPATH' and 'ENDLIBPATH' to
-control where to load conventional DLLs from. Those names are
-intercepted and converted to calls on the OS/2 kernel APIs and
-are inherited by child processes, whether Python-based or not.
-
-A few new attributes have been added to the os module:
-
- os.meminstalled # Count of Bytes of RAM Installed on Machine
- os.memkernel # Count of Bytes of RAM Reserved (Non-Swappable)
- os.memvirtual # Count of Bytes of Virtual RAM Possible
- os.timeslice # Duration of Scheduler Timeslice, in Milliseconds
- os.maxpathlen # Maximum Length of a Path Specification, in chars
- os.maxnamelen # Maximum Length of a Single Dir/File Name, in chars
- os.version # Version of OS/2 Being Run e.g. "4.00"
- os.revision # Revision of OS/2 Being Run (usually zero)
- os.bootdrive # Drive that System Booted From e.g. "C:"
- # (useful to find the CONFIG.SYS used to boot with)
-
-
--- Using Python as the Default OS/2 Batch Language
-
-Note that OS/2 supports the Unix technique of putting the special
-comment line at the time of scripts e.g. "#!/usr/bin/python" in
-a different syntactic form. To do this, put your script into a file
-with a .CMD extension and added 'extproc' to the top as follows:
-
- extproc C:\Python\Python.exe -x
- import os
- print "Hello from Python"
-
-The '-x' option tells Python to skip the first line of the file
-while processing the rest as normal Python source.
-
-
--- Suggested Environment Variable Setup
-
-With respect to the environment variables for Python, I use the
-following setup:
-
- Set PYTHONHOME=E:\Tau\Projects\Python;D:\DLLs
- Set PYTHONPATH=.;E:\Tau\Projects\Python\Lib; \
- E:\Tau\Projects\Python\Lib\plat-win
-
-The EXEC_PREFIX (optional second pathspec on PYTHONHOME) is where
-you put any Python extension DLLs you may create/obtain. There
-are none provided with this release.
-
-
--- Contact Info
-
-If you have questions, suggestions or problems specifically with
-the OS/2 VAC++ port of Python, please contact me at:
-
- Jeff Rush <jrush@summit-research.com>.
-
-I support no other platform but OS/2 (and eventually AmigaDOS).
+IBM VisualAge C/C++ for OS/2
+============================
+
+To build Python for OS/2, change into ./os2vacpp and issue an 'NMAKE'
+command. This will build a PYTHON15.DLL containing the set of Python
+modules listed in config.c and a small PYTHON.EXE to start the
+interpreter.
+
+By changing the C compiler flag /Gd- in the makefile to /Gd+, you can
+reduce the size of these by causing Python to dynamically link to the
+C runtime DLLs instead of including their bulk in your binaries.
+However, this means that any system on which you run Python must have
+the VAC++ compiler installed in order to have those DLLs available.
+
+During the build process you may see a couple of harmless warnings:
+
+ From the C Compiler, "No function prototype given for XXX", which
+ comes from the use of K&R parameters within Python for portability.
+
+ From the ILIB librarian, "Module Not Found (XXX)", which comes
+ from its attempt to perform the (-+) operation, which removes and
+ then adds a .OBJ to the library. The first time a build is done,
+ it obviously cannot remove what is not yet built.
+
+This build includes support for most Python functionality as well as
+TCP/IP sockets. It omits the Posix ability to 'fork' a process but
+supports threads using OS/2 native capabilities. I have tried to
+support everything possible but here are a few usage notes.
+
+
+-- os.popen() Usage Warnings
+
+With respect to my implementation of popen() under OS/2:
+
+ import os
+
+ fd = os.popen("pkzip.exe -@ junk.zip", 'wb')
+ fd.write("file1.txt\n")
+ fd.write("file2.txt\n")
+ fd.write("file3.txt\n")
+ fd.write("\x1a") # Should Not Be Necessary But Is
+ fd.close()
+
+There is a bug, either in the VAC++ compiler or OS/2 itself, where the
+simple closure of the write-side of a pipe -to- a process does not
+send an EOF to that process. I find I must explicitly write a
+control-Z (EOF) before closing the pipe. This is not a problem when
+using popen() in read mode.
+
+One other slight difference with my popen() is that I return None
+from the close(), instead of the Unix convention of the return code
+of the spawned program. I could find no easy way to do this under
+OS/2.
+
+
+-- BEGINLIBPATH/ENDLIBPATH
+
+With respect to environment variables, this OS/2 port supports the
+special-to-OS/2 magic names of 'BEGINLIBPATH' and 'ENDLIBPATH' to
+control where to load conventional DLLs from. Those names are
+intercepted and converted to calls on the OS/2 kernel APIs and
+are inherited by child processes, whether Python-based or not.
+
+A few new attributes have been added to the os module:
+
+ os.meminstalled # Count of Bytes of RAM Installed on Machine
+ os.memkernel # Count of Bytes of RAM Reserved (Non-Swappable)
+ os.memvirtual # Count of Bytes of Virtual RAM Possible
+ os.timeslice # Duration of Scheduler Timeslice, in Milliseconds
+ os.maxpathlen # Maximum Length of a Path Specification, in chars
+ os.maxnamelen # Maximum Length of a Single Dir/File Name, in chars
+ os.version # Version of OS/2 Being Run e.g. "4.00"
+ os.revision # Revision of OS/2 Being Run (usually zero)
+ os.bootdrive # Drive that System Booted From e.g. "C:"
+ # (useful to find the CONFIG.SYS used to boot with)
+
+
+-- Using Python as the Default OS/2 Batch Language
+
+Note that OS/2 supports the Unix technique of putting the special
+comment line at the time of scripts e.g. "#!/usr/bin/python" in
+a different syntactic form. To do this, put your script into a file
+with a .CMD extension and added 'extproc' to the top as follows:
+
+ extproc C:\Python\Python.exe -x
+ import os
+ print "Hello from Python"
+
+The '-x' option tells Python to skip the first line of the file
+while processing the rest as normal Python source.
+
+
+-- Suggested Environment Variable Setup
+
+With respect to the environment variables for Python, I use the
+following setup:
+
+ Set PYTHONHOME=E:\Tau\Projects\Python;D:\DLLs
+ Set PYTHONPATH=.;E:\Tau\Projects\Python\Lib; \
+ E:\Tau\Projects\Python\Lib\plat-win
+
+The EXEC_PREFIX (optional second pathspec on PYTHONHOME) is where
+you put any Python extension DLLs you may create/obtain. There
+are none provided with this release.
+
+
+-- Contact Info
+
+If you have questions, suggestions or problems specifically with
+the OS/2 VAC++ port of Python, please contact me at:
+
+ Jeff Rush <jrush@summit-research.com>.
+
+I support no other platform but OS/2 (and eventually AmigaDOS).