summaryrefslogtreecommitdiffstats
path: root/Mac
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>2000-04-07 09:10:49 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>2000-04-07 09:10:49 (GMT)
commit2d1306b7cf4a85290ffbd90a15fed6115a522310 (patch)
tree01dc9d71385f7659ba36bd2b27f4ca2c3d3a1154 /Mac
parent5c21420772a94846ce7dd077d10a2575da15e84e (diff)
downloadcpython-2d1306b7cf4a85290ffbd90a15fed6115a522310.zip
cpython-2d1306b7cf4a85290ffbd90a15fed6115a522310.tar.gz
cpython-2d1306b7cf4a85290ffbd90a15fed6115a522310.tar.bz2
Started on GUSI2 and threading support.
Diffstat (limited to 'Mac')
-rw-r--r--Mac/Include/macglue.h5
-rw-r--r--Mac/Python/getmtime.c4
-rw-r--r--Mac/Python/gusiconfig.cpp101
-rw-r--r--Mac/Python/macgetcompiler.c22
-rw-r--r--Mac/Python/macgetpath.c4
-rw-r--r--Mac/Python/macglue.c17
-rw-r--r--Mac/Python/macimport.c8
-rw-r--r--Mac/Python/macmain.c8
-rw-r--r--Mac/mwerks/errno_unix.h2
-rw-r--r--Mac/mwerks/mwerks_nonshared_config.h3
-rw-r--r--Mac/mwerks/mwerks_plugin_config.h3
-rw-r--r--Mac/mwerks/mwerks_shared_config.h3
-rw-r--r--Mac/mwerks/mwerks_small_config.h5
-rw-r--r--Mac/mwerks/mwerks_threadsmall_config.h35
-rw-r--r--Mac/mwerks/mwerks_tkplugin_config.h3
-rw-r--r--Mac/mwerks/projects/build.macfreeze/frozenbundle.rsrcbin5340 -> 5556 bytes
16 files changed, 194 insertions, 29 deletions
diff --git a/Mac/Include/macglue.h b/Mac/Include/macglue.h
index bc1939f..ec2dfbd 100644
--- a/Mac/Include/macglue.h
+++ b/Mac/Include/macglue.h
@@ -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 */
diff --git a/Mac/Python/getmtime.c b/Mac/Python/getmtime.c
index 29721ee..a14ef71 100644
--- a/Mac/Python/getmtime.c
+++ b/Mac/Python/getmtime.c
@@ -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
index 0000000..c69498f
--- /dev/null
+++ b/Mac/Python/gusiconfig.cpp
@@ -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 *************************/
diff --git a/Mac/Python/macgetcompiler.c b/Mac/Python/macgetcompiler.c
index 347b8d2..8836581 100644
--- a/Mac/Python/macgetcompiler.c
+++ b/Mac/Python/macgetcompiler.c
@@ -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
diff --git a/Mac/Python/macgetpath.c b/Mac/Python/macgetpath.c
index 02f9b48..d1c60a0 100644
--- a/Mac/Python/macgetpath.c
+++ b/Mac/Python/macgetpath.c
@@ -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()
{
diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c
index 46493d3..fd0ddfb 100644
--- a/Mac/Python/macglue.c
+++ b/Mac/Python/macglue.c
@@ -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;
diff --git a/Mac/Python/macimport.c b/Mac/Python/macimport.c
index e079d2e..2f5d622 100644
--- a/Mac/Python/macimport.c
+++ b/Mac/Python/macimport.c
@@ -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;
diff --git a/Mac/Python/macmain.c b/Mac/Python/macmain.c
index db39e18..98298c8 100644
--- a/Mac/Python/macmain.c
+++ b/Mac/Python/macmain.c
@@ -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
diff --git a/Mac/mwerks/errno_unix.h b/Mac/mwerks/errno_unix.h
index 7f63ef6..2e6f171 100644
--- a/Mac/mwerks/errno_unix.h
+++ b/Mac/mwerks/errno_unix.h
@@ -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
diff --git a/Mac/mwerks/mwerks_nonshared_config.h b/Mac/mwerks/mwerks_nonshared_config.h
index e4bb1c8..e3d97ec 100644
--- a/Mac/mwerks/mwerks_nonshared_config.h
+++ b/Mac/mwerks/mwerks_nonshared_config.h
@@ -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 */
diff --git a/Mac/mwerks/mwerks_plugin_config.h b/Mac/mwerks/mwerks_plugin_config.h
index 0052df8..1bb465d 100644
--- a/Mac/mwerks/mwerks_plugin_config.h
+++ b/Mac/mwerks/mwerks_plugin_config.h
@@ -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 */
diff --git a/Mac/mwerks/mwerks_shared_config.h b/Mac/mwerks/mwerks_shared_config.h
index 4662d9b..66174b5 100644
--- a/Mac/mwerks/mwerks_shared_config.h
+++ b/Mac/mwerks/mwerks_shared_config.h
@@ -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 */
diff --git a/Mac/mwerks/mwerks_small_config.h b/Mac/mwerks/mwerks_small_config.h
index 762ef8f..771565b 100644
--- a/Mac/mwerks/mwerks_small_config.h
+++ b/Mac/mwerks/mwerks_small_config.h
@@ -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
index 0000000..70a11a0
--- /dev/null
+++ b/Mac/mwerks/mwerks_threadsmall_config.h
@@ -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
diff --git a/Mac/mwerks/mwerks_tkplugin_config.h b/Mac/mwerks/mwerks_tkplugin_config.h
index 4b9fdc8..88b7552 100644
--- a/Mac/mwerks/mwerks_tkplugin_config.h
+++ b/Mac/mwerks/mwerks_tkplugin_config.h
@@ -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 */
diff --git a/Mac/mwerks/projects/build.macfreeze/frozenbundle.rsrc b/Mac/mwerks/projects/build.macfreeze/frozenbundle.rsrc
index b219a42..fa2c02a 100644
--- a/Mac/mwerks/projects/build.macfreeze/frozenbundle.rsrc
+++ b/Mac/mwerks/projects/build.macfreeze/frozenbundle.rsrc
Binary files differ