diff --git a/Mac/Modules/config.c b/Mac/Modules/config.c index 32313a72f02..1ce7f77f2a5 100644 --- a/Mac/Modules/config.c +++ b/Mac/Modules/config.c @@ -29,9 +29,8 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #endif #ifdef macintosh -/* The Macintosh main program is in macmain.c */ +/* The Macintosh main program is in either macapplet.c or macapplication.c */ #define NO_MAIN -char *fileargument; /* So main() can tell us the program name */ #endif #include @@ -42,7 +41,6 @@ char *fileargument; /* So main() can tell us the program name */ #include "osdefs.h" #include "intrcheck.h" -char *PyMac_GetPythonDir(); #ifndef NO_MAIN @@ -168,12 +166,13 @@ getpythonpath() ** - Prepend the python home-directory (which is obtained from a Preferences ** resource) ** - Add : - ** - Chdir to where the source file (if any) lives */ static char *pythonpath; char *curwd; char *p, *endp; int newlen; + extern char *PyMac_GetPythonDir(); + extern char *PyMac_GetScriptPath(); if ( pythonpath ) return pythonpath; curwd = PyMac_GetPythonDir(); @@ -205,14 +204,6 @@ getpythonpath() pythonpath[newlen] = '\0'; p = endp + 1; } - if ( fileargument ) { - strcpy(curwd, fileargument); - endp = strrchr(curwd, ':'); - if ( endp && endp > curwd ) { - *endp = '\0'; - chdir(curwd); - } - } return pythonpath; #else /* !macintosh */ char *path = getenv("PYTHONPATH"); @@ -346,13 +337,17 @@ struct { {"mactcp", initmactcp}, #endif {"AE", initAE}, +#ifndef __MWERKS__ {"Ctl", initCtl}, {"Dlg", initDlg}, +#endif {"Evt", initEvt}, {"Menu", initMenu}, +#ifndef __MWERKS__ {"Qd", initQd}, {"Snd", initSnd}, {"Win", initWin}, +#endif {"Res", initRes}, /* -- ADDMODULE MARKER 2 -- */ diff --git a/Mac/Python/macapplication.c b/Mac/Python/macapplication.c new file mode 100644 index 00000000000..bac0620bd72 --- /dev/null +++ b/Mac/Python/macapplication.c @@ -0,0 +1,35 @@ +/*********************************************************** +Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, +The Netherlands. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the names of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +******************************************************************/ + +/* Macintosh Applet Python main program */ + +#ifdef __CFM68K__ +#pragma lib_export on +#endif + +extern void PyMac_InitApplication(); + +main() { + PyMac_InitApplication(); +} diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c index cab94cec6ab..7135f3331a3 100644 --- a/Mac/Python/macglue.c +++ b/Mac/Python/macglue.c @@ -117,7 +117,6 @@ static int in_foreground; int PyMac_DoYieldEnabled = 1; /* Don't do eventloop when false */ - /* Convert C to Pascal string. Returns pointer to static buffer. */ unsigned char * Pstring(char *str) @@ -787,26 +786,7 @@ PyMac_BuildEventRecord(EventRecord *e) } -#ifndef USE_MAC_SHARED_LIBRARY - -/* For normal application */ -void -main() -{ - int argc; - char **argv; - -#ifdef __MWERKS__ - SIOUXSettings.asktosaveonclose = 0; - SIOUXSettings.showstatusline = 0; - SIOUXSettings.tabspaces = 4; -#endif - argc = PyMac_GetArgv(&argv); - Py_Main(argc, argv); -} - -#else /* USE_MAC_SHARED_LIBRARY */ - +#ifdef USE_MAC_APPLET_SUPPORT /* Applet support */ /* Run a compiled Python Python script from 'PYC ' resource __main__ */ @@ -850,9 +830,7 @@ PyMac_InitApplet() char **argv; int err; -#ifdef USE_MAC_SHARED_LIBRARY PyMac_AddLibResources(); -#endif #ifdef __MWERKS__ SIOUXSettings.asktosaveonclose = 0; SIOUXSettings.showstatusline = 0; @@ -873,4 +851,34 @@ PyMac_InitApplet() /* XXX Should we bother to Py_Exit(sts)? */ } -#endif /* USE_MAC_SHARED_LIBRARY */ +#endif /* USE_MAC_APPLET_SUPPORT */ + +/* For normal application */ +void +PyMac_InitApplication() +{ + int argc; + char **argv; + +#ifdef USE_MAC_SHARED_LIBRARY + PyMac_AddLibResources(); +#endif +#ifdef __MWERKS__ + SIOUXSettings.asktosaveonclose = 0; + SIOUXSettings.showstatusline = 0; + SIOUXSettings.tabspaces = 4; +#endif + argc = PyMac_GetArgv(&argv); + if ( argc > 1 ) { + /* We're running a script. Attempt to change current directory */ + char curwd[256], *endp; + + strcpy(curwd, argv[1]); + endp = strrchr(curwd, ':'); + if ( endp && endp > curwd ) { + *endp = '\0'; + chdir(curwd); + } + } + Py_Main(argc, argv); +}