]> granicus.if.org Git - python/commitdiff
Started on GUSI2 and threading support.
authorJack Jansen <jack.jansen@cwi.nl>
Fri, 7 Apr 2000 09:10:49 +0000 (09:10 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Fri, 7 Apr 2000 09:10:49 +0000 (09:10 +0000)
16 files changed:
Mac/Include/macglue.h
Mac/Python/getmtime.c
Mac/Python/gusiconfig.cpp [new file with mode: 0644]
Mac/Python/macgetcompiler.c
Mac/Python/macgetpath.c
Mac/Python/macglue.c
Mac/Python/macimport.c
Mac/Python/macmain.c
Mac/mwerks/errno_unix.h
Mac/mwerks/mwerks_nonshared_config.h
Mac/mwerks/mwerks_plugin_config.h
Mac/mwerks/mwerks_shared_config.h
Mac/mwerks/mwerks_small_config.h
Mac/mwerks/mwerks_threadsmall_config.h [new file with mode: 0644]
Mac/mwerks/mwerks_tkplugin_config.h
Mac/mwerks/projects/build.macfreeze/frozenbundle.rsrc

index bc1939fb1afb6ea83eb3de7d8da168cd6b8194b7..ec2dfbd93d3668140c65eeff8ca92df0dd0e87b2 100644 (file)
@@ -53,8 +53,9 @@ typedef struct {
 #pragma lib_export on
 #endif
 
-#ifdef USE_GUSI
+#ifdef USE_GUSI1
 void PyMac_FixGUSIcd Py_PROTO((void));         /* Workaround for GUSI chdir() call */
+extern void PyMac_SetGUSISpin(void);           /* Install our private GUSI spin routine */
 #endif
 
 char *PyMac_StrError(int);                     /* strerror with mac errors */
@@ -62,7 +63,6 @@ unsigned char *Pstring(char *str);            /* Convert c-string to pascal-string in stat
 
 #ifdef USE_GUSI
 extern int PyMac_ConsoleIsDead;                        /* True when exiting */
-extern void PyMac_SetGUSISpin(void);           /* Install our private GUSI spin routine */
 extern void PyMac_StopGUSISpin(void);          /* Stop eventprocessing during exit() */
 #endif
 
@@ -81,6 +81,7 @@ void PyMac_GetSchedParams Py_PROTO((PyMacSchedParams *));     /* Get schedulers para
 void PyMac_SetSchedParams Py_PROTO((PyMacSchedParams *));      /* Set schedulers params */
 PyObject *PyErr_Mac(PyObject *, int);          /* Exception with a mac error */
 PyObject *PyMac_Error(OSErr);                  /* Uses PyMac_GetOSErrException */
+int PyMac_DoYield Py_PROTO((int, int));        /* Yield cpu. First arg is maxtime, second ok to call python */
 int PyMac_HandleEvent Py_PROTO((EventRecord *));       /* Handle one event, possibly in Python */
 void PyMac_HandleEventIntern Py_PROTO((EventRecord *)); /* Handle one event internal only */
 int PyMac_SetEventHandler Py_PROTO((PyObject *));      /* set python-coded event handler */
index 29721ee91b379065180a766b2836612d5578afc3..a14ef71695ec390e9e127d744c41f1e83367ae37 100644 (file)
@@ -38,7 +38,11 @@ PERFORMANCE OF THIS SOFTWARE.
 #ifdef USE_GUSI
 #include <sys/types.h>
 #endif /* USE_GUSI */
+#ifdef USE_GUSI2
+#include <sys/stat.h>
+#else
 #include <stat.h>
+#endif
 #include "rename2.h"
 
 long
diff --git a/Mac/Python/gusiconfig.cpp b/Mac/Python/gusiconfig.cpp
new file mode 100644 (file)
index 0000000..c69498f
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * Generated with the GUSIConfig application and then hand-modified by jack.
+ */
+
+#define GUSI_SOURCE
+#include <GUSIConfig.h>
+#include <sys/cdefs.h>
+
+#include "Python.h"
+#include "macglue.h"
+
+static void
+PyMac_GUSISpin(bool wait)
+{
+       static Boolean  inForeground = true;
+       int             maxsleep = 6;   /* 6 ticks is "normal" sleeptime */
+
+       if (PyMac_ConsoleIsDead) return;
+
+       if ( !wait )
+               maxsleep = 0;
+
+       PyMac_DoYield(maxsleep, 0); /* XXXX or is it safe to call python here? */
+}
+
+
+/* Declarations of Socket Factories */
+
+__BEGIN_DECLS
+void GUSIwithInetSockets();
+void GUSIwithLocalSockets();
+void GUSIwithMTInetSockets();
+void GUSIwithMTTcpSockets();
+void GUSIwithMTUdpSockets();
+void GUSIwithOTInetSockets();
+void GUSIwithOTTcpSockets();
+void GUSIwithOTUdpSockets();
+void GUSIwithPPCSockets();
+void GUSISetupFactories();
+__END_DECLS
+
+/* Configure Socket Factories */
+
+void GUSISetupFactories()
+{
+#ifdef GUSISetupFactories_BeginHook
+       GUSISetupFactories_BeginHook
+#endif
+       GUSIwithInetSockets();
+#ifdef GUSISetupFactories_EndHook
+       GUSISetupFactories_EndHook
+#endif
+}
+
+/* Declarations of File Devices */
+
+__BEGIN_DECLS
+void GUSIwithDConSockets();
+void GUSIwithNullSockets();
+void GUSISetupDevices();
+__END_DECLS
+
+/* Configure File Devices */
+
+void GUSISetupDevices()
+{
+#ifdef GUSISetupDevices_BeginHook
+       GUSISetupDevices_BeginHook
+#endif
+#ifdef GUSISetupDevices_EndHook
+       GUSISetupDevices_EndHook
+#endif
+}
+
+#ifndef __cplusplus
+#error GUSISetupConfig() needs to be written in C++
+#endif
+
+GUSIConfiguration::FileSuffix  sSuffices[] = {
+       "", '????', '????'
+};
+
+extern "C" void GUSISetupConfig()
+{
+       GUSIConfiguration * config =
+               GUSIConfiguration::CreateInstance(GUSIConfiguration::kNoResource);
+
+       config->ConfigureDefaultTypeCreator('TEXT', 'TEXT');
+       config->ConfigureSuffices(
+               sizeof(sSuffices)/sizeof(GUSIConfiguration::FileSuffix)-1, sSuffices);
+       config->ConfigureAutoInitGraf(false);
+       config->ConfigureAutoSpin(false);
+       config->ConfigureHandleAppleEvents(false);
+       config->ConfigureSigInt(false);
+       config->ConfigureSigPipe(true);
+       
+       GUSISetHook(GUSI_SpinHook, (GUSIHook)PyMac_GUSISpin);
+
+}
+
+/**************** END GUSI CONFIGURATION *************************/
index 347b8d20b617cc4f1f979097bf196f31ed2d8be8..8836581386336350d1bd5a23a4267ca5f6367c02 100644 (file)
@@ -38,23 +38,35 @@ PERFORMANCE OF THIS SOFTWARE.
 #endif
 
 #ifdef __MWERKS__
-#ifdef USE_GUSI
-#define HASGUSI " w/GUSI"
+#ifdef USE_GUSI1
+#define HASGUSI " w/GUSI1"
+#else
+#ifdef USE_GUSI2
+#define HASGUSI " w/GUSI2"
 #else
 #define HASGUSI ""
 #endif
+#endif
+
 #ifdef USE_MSL
 #define HASMSL " w/MSL"
 #else
 #define HASMSL ""
 #endif
+
+#ifdef WITH_THREAD
+#define HASTHREAD " w/THREADS"
+#else
+#define HASTHREAD ""
+#endif
+
 #ifdef __powerc
-#define COMPILER " [CW PPC" HASGUSI HASMSL "]"
+#define COMPILER " [CW PPC" HASGUSI HASMSL HASTHREAD"]"
 #else
 #ifdef __CFM68K__
-#define COMPILER " [CW CFM68K" HASGUSI HASMSL "]"
+#define COMPILER " [CW CFM68K" HASGUSI HASMSL  HASTHREAD"]"
 #else
-#define COMPILER " [CW 68K" HASGUSI HASMSL "]"
+#define COMPILER " [CW 68K" HASGUSI HASMSL  HASTHREAD"]"
 #endif
 #endif
 #endif
index 02f9b485e62228756b310e29b39211ba74776053..d1c60a07d8ecac60475c589454a87606765ff2b4 100644 (file)
@@ -54,7 +54,7 @@ PERFORMANCE OF THIS SOFTWARE.
 #include <TextUtils.h>
 #include <Dialogs.h>
 
-#ifdef USE_GUSI
+#ifdef USE_GUSI1
 #include <GUSI.h>
 #endif
 
@@ -444,7 +444,7 @@ PyMac_PreferenceOptions(PyMac_PrefRecord *pr)
        UseResFile(oldrh);
 }
 
-#ifdef USE_GUSI
+#ifdef USE_GUSI1
 void
 PyMac_SetGUSIOptions()
 {
index 46493d3c7e4f966e98997f1c9b4b31c211b8346b..fd0ddfbb1f6316d73362ce54457bfd1cad901bff 100644 (file)
@@ -62,11 +62,11 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #ifdef __MWERKS__
 #include <SIOUX.h>
 #endif
-#ifdef USE_GUSI
+#ifdef USE_GUSI1
 #include <TFileSpec.h> /* For Path2FSSpec */
-#include <LowMem.h> /* For SetSFCurDir, etc */
 #include <GUSI.h>
 #endif
+#include <LowMem.h>
 
 /* The ID of the Sioux apple menu */
 #define SIOUX_APPLEID  32000
@@ -108,7 +108,6 @@ extern PyObject *newmfssobject Py_PROTO((FSSpec *));
 static int interrupted;                        /* Set to true when cmd-. seen */
 static RETSIGTYPE intcatcher Py_PROTO((int));
 
-static int PyMac_DoYield Py_PROTO((int, int));
 static int PyMac_Yield Py_PROTO((void));
 
 /*
@@ -161,7 +160,7 @@ static PyObject *python_event_handler;
 */
 int PyMac_AppearanceCompliant;
 
-#ifdef USE_GUSI
+#ifdef USE_GUSI1
 /*
 ** GUSI (1.6.0 and earlier, at the least) do not set the MacOS idea of
 ** the working directory. Hence, we call this routine after each call
@@ -183,7 +182,9 @@ PyMac_FixGUSIcd()
        if (PBHSetVolSync(&pb) != noErr)
                return;
 }
+#endif
 
+#ifdef USE_GUSI
 /*
 ** SpinCursor (needed by GUSI) drags in heaps of stuff, so we
 ** provide a dummy here.
@@ -194,6 +195,7 @@ void RotateCursor(short x) { /* Dummy */ }
 /*
 ** Replacement GUSI Spin function
 */
+#ifdef USE_GUSI1
 static int
 PyMac_GUSISpin(spin_msg msg, long arg)
 {
@@ -222,6 +224,7 @@ void
 PyMac_SetGUSISpin() {
        GUSISetHook(GUSI_SpinHook, (GUSIHook)PyMac_GUSISpin);
 }
+#endif
 
 /* Called at exit() time thru atexit(), to stop event processing */
 void
@@ -531,7 +534,7 @@ PyMac_HandleEvent(evp)
 /*
 ** Yield the CPU to other tasks without processing events.
 */
-static int
+int
 PyMac_DoYield(int maxsleep, int maycallpython)
 {
        EventRecord ev;
@@ -563,7 +566,7 @@ PyMac_DoYield(int maxsleep, int maycallpython)
                }
        } else {
                latest_time_ready = LMGetTicks() + maxsleep;
-               while ( maxsleep >= 0 ) {
+               do {
                        /* XXXX Hack by Jack.
                        ** In time.sleep() you can click to another application
                        ** once only. If you come back to Python you cannot get away
@@ -578,7 +581,7 @@ PyMac_DoYield(int maxsleep, int maycallpython)
                                return -1;
                        }
                        maxsleep = latest_time_ready - LMGetTicks();
-               }
+               } while ( maxsleep > 0 );
        }
        in_here--;
        return 0;
index e079d2e5ee478e2d8775acf2107ed1f0ed764b5a..2f5d622b6927ec6c67fc5dc9ae5b81a98e23a095 100644 (file)
@@ -48,7 +48,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #endif
 #include <CodeFragments.h>
 
-#ifdef USE_GUSI
+#ifdef USE_GUSI1
 #include "TFileSpec.h" /* for Path2FSSpec() */
 #endif
 
@@ -104,7 +104,7 @@ findnamedresource(
                UseResFile(PyMac_AppRefNum);
                filerh = -1;
        } else {
-#ifdef USE_GUSI
+#ifdef USE_GUSI1
                if ( Path2FSSpec(filename, &fss) != noErr ||
 #else
                if ( FSMakeFSSpec(0, 0, Pstring(filename), &fss) != noErr ||
@@ -303,7 +303,7 @@ char *filename;
                UseResFile(PyMac_AppRefNum);
                filerh = -1;
        } else {
-#ifdef USE_GUSI
+#ifdef USE_GUSI1
                if ( (err=Path2FSSpec(filename, &fss)) != noErr ||
                     FSpGetFInfo(&fss, &finfo) != noErr )
 #else
@@ -432,7 +432,7 @@ PyMac_FindModuleExtension(char *buf, int *lenp, char *module)
 #else
        strcpy(buf+*lenp, _PyImport_Filetab[0].suffix);
 #endif
-#ifdef USE_GUSI
+#ifdef USE_GUSI1
        if ( Path2FSSpec(buf, &fss) == noErr && 
                        FSpGetFInfo(&fss, &finfo) == noErr)
                return _PyImport_Filetab;
index db39e18d1a7342943b8174103ae68933ded8d13b..98298c8fcd6b541afb357ea72bf0fc2fe264bce8 100644 (file)
@@ -225,13 +225,15 @@ init_common(int *argcp, char ***argvp, int embedded)
        PyMac_AddLibResources();
 #endif
 
-#if defined(USE_GUSI)
+#if defined(USE_GUSI1)
        /* Setup GUSI */
        GUSIDefaultSetup();
        PyMac_SetGUSISpin();
        PyMac_SetGUSIOptions();
-       atexit(PyMac_StopGUSISpin);
 #endif
+#if defined(USE_GUSI)
+       atexit(PyMac_StopGUSISpin);
+#endif 
 
 #ifdef USE_SIOUX
        /* Set various SIOUX flags. Some are changed later based on options */
@@ -405,7 +407,7 @@ PyMac_InitApplication()
                        *endp = '\0';
 
                        chdir(curwd);
-#ifdef USE_GUSI
+#ifdef USE_GUSI1
                        /* Change MacOS's idea of wd too */
                        PyMac_FixGUSIcd();
 #endif
index 7f63ef6dba9b848b07f4162429547b90a6d0385a..2e6f171240acfe0d119af6e3f2b61fc28eb6ab1a 100644 (file)
@@ -29,6 +29,7 @@ PERFORMANCE OF THIS SOFTWARE.
 
 ******************************************************************/
 
+#ifndef USE_GUSI2
 #define ENOTDIR                (-120)
 #ifndef __MSL__
 #define EACCES         (-54)
@@ -40,6 +41,7 @@ PERFORMANCE OF THIS SOFTWARE.
 #define ENFILE         (-42)
 #define        EIO                     (-36)
 #define ENOSPC         (-34)
+#endif
 
 #define ESRCH          3
 #define EINTR          4
index e4bb1c8930ed79c8dc6461e33ec1f0912ebcc28b..e3d97ec0f83f539218417349fb9d672b13b550fe 100644 (file)
@@ -5,7 +5,8 @@
 ** specific features, you may also need different sets of sources.
 */
 
-#define USE_GUSI               /* Stdio implemented with GUSI */
+#define USE_GUSI1              /* Stdio implemented with GUSI */
+/* #define USE_GUSI2           /* Stdio implemented with GUSI 2 */
 #define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
 #define USE_TOOLBOX            /* Include toolbox modules in core Python */
 #define USE_QT                 /* Include quicktime modules in core Python */
index 0052df80be7ddcbb442e264ddc2503be85849fe0..1bb465df24d91b0db9193d87caac7050be7e9b05 100644 (file)
@@ -2,7 +2,8 @@
 ** Config file for dynamically-loaded ppc/cfm68k plugin modules.
 */
 
-#define USE_GUSI               /* Stdio implemented with GUSI */
+#define USE_GUSI1              /* Stdio implemented with GUSI */
+/* #define USE_GUSI2           /* Stdio implemented with GUSI */
 #define USE_MSL                        /* Use MSL libraries */
 #ifdef USE_MSL
 #define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
index 4662d9b2364d831136509e23c93e7f6d8198e3dd..66174b5840de111f2411b511ddfa0c172e9dc279 100644 (file)
@@ -6,7 +6,8 @@
 ** specific features, you may also need different sets of sources.
 */
 
-#define USE_GUSI               /* Stdio implemented with GUSI */
+/* #define USE_GUSI1           /* Stdio implemented with GUSI */
+#define USE_GUSI2              /* Stdio implemented with GUSI */
 #define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
 #define USE_CORE_TOOLBOX       /* Include core toolbox modules (Dlg,Ctl,Menu,Win,Res,Qd) */
 /* #define USE_TOOLBOX         /* Include all toolbox modules in core Python */
index 762ef8f1d4a10cb82ed0e5803204137e3cbbeb52..771565b1d31076db98c7fbcaf3d415dcbba2923e 100644 (file)
@@ -5,7 +5,8 @@
 ** specific features, you may also need different sets of sources.
 */
 
-#define USE_GUSI               /* Stdio implemented with GUSI */
+#define USE_GUSI2              /* Stdio implemented with GUSI 2 */
+/* # define USE_GUSI1  /* Stdio implemented with GUSI 1 */
 #define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
 #define USE_TOOLBOX            /* Include toolbox modules in core Python */
 #define USE_QT                 /* Include quicktime modules in core Python */
@@ -20,7 +21,7 @@
 /* #define USE_MAC_SHARED_LIBRARY      /* Enable code to add shared-library resources */
 /* #define USE_MAC_APPLET_SUPPORT      /* Enable code to run a PYC resource */
 /* #define HAVE_DYNAMIC_LOADING                /* Enable dynamically loaded modules */
-#define USE_MALLOC_DEBUG                       /* Enable range checking and other malloc debugging */
+/* #define USE_MALLOC_DEBUG                    /* Enable range checking and other malloc debugging */
 /* #define USE_GDBM            /* Include the gdbm module */
 /* #define USE_ZLIB            /* Include the zlib module */
 #define USE_APPEARANCE /* Enable Appearance support */
diff --git a/Mac/mwerks/mwerks_threadsmall_config.h b/Mac/mwerks/mwerks_threadsmall_config.h
new file mode 100644 (file)
index 0000000..70a11a0
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+** Configuration file for small standalone 68k/ppc Python.
+**
+** Note: enabling the switches below is not enough to enable the
+** specific features, you may also need different sets of sources.
+*/
+
+#define USE_GUSI2              /* Stdio implemented with GUSI 2 */
+/* # define USE_GUSI1  /* Stdio implemented with GUSI 1 */
+#define WITH_THREAD            /* Use thread support (needs GUSI 2, not GUSI 1) */
+#define USE_MSL                        /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
+#define USE_TOOLBOX            /* Include toolbox modules in core Python */
+#define USE_QT                 /* Include quicktime modules in core Python */
+/* #define USE_WASTE           /* Include waste module in core Python */
+#define USE_MACSPEECH          /* Include macspeech module in core Python */
+/* #define USE_IMG             /* Include img modules in core Python */
+#define USE_MACCTB             /* Include ctb module in core Python */
+/* #define USE_STDWIN          /* Include stdwin module in core Python */
+/* #define USE_MACTCP          /* Include mactcp (*not* socket) modules in core */
+/* #define USE_TK                      /* Include _tkinter module in core Python */
+/* #define MAC_TCL                     /* This *must* be on if USE_TK is on */
+/* #define USE_MAC_SHARED_LIBRARY      /* Enable code to add shared-library resources */
+/* #define USE_MAC_APPLET_SUPPORT      /* Enable code to run a PYC resource */
+/* #define HAVE_DYNAMIC_LOADING                /* Enable dynamically loaded modules */
+#define USE_MALLOC_DEBUG                       /* Enable range checking and other malloc debugging */
+/* #define USE_GDBM            /* Include the gdbm module */
+/* #define USE_ZLIB            /* Include the zlib module */
+#define USE_APPEARANCE /* Enable Appearance support */
+#ifdef __powerc
+#define USE_CACHE_ALIGNED 8            /* Align on 32-byte boundaries for 604 */
+#endif
+#ifdef USE_MSL
+#define MSL_USE_PRECOMPILED_HEADERS 0  /* Don't use precomp headers: we include our own */
+#include <ansi_prefix.mac.h>
+#endif
index 4b9fdc8fc399cb9d9176cfc783a98fa3665cea4c..88b7552bf99d1bbf6b83a7a95a2c9008de27fe57 100644 (file)
@@ -2,6 +2,7 @@
 ** Special config-file for _tkinter plugin.
 */
 
-#define USE_GUSI               /* Stdio implemented with GUSI */
+#define USE_GUSI1              /* Stdio implemented with GUSI */
+/* #define USE_GUSI2           /* Stdio implemented with GUSI */
 #define USE_TK                 /* Include _tkinter module in core Python */
 #define MAC_TCL                        /* This *must* be on if USE_TK is on */
index b219a42833ba87ab74aede4a2e98610bad4045c8..fa2c02ad2ebc39d47b001096488d364b57434a65 100644 (file)
Binary files a/Mac/mwerks/projects/build.macfreeze/frozenbundle.rsrc and b/Mac/mwerks/projects/build.macfreeze/frozenbundle.rsrc differ