diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 1995-02-24 22:53:16 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 1995-02-24 22:53:16 (GMT) |
commit | 76efd8e7a193d5e17f0f607ec5a2756636f9a9a5 (patch) | |
tree | fbd1495cc56a17715fbf6e8d175bcc7503c6330c /Mac | |
parent | 397c3fb4d7b0e3bca7471e2f3e166b59d769880f (diff) | |
download | cpython-76efd8e7a193d5e17f0f607ec5a2756636f9a9a5.zip cpython-76efd8e7a193d5e17f0f607ec5a2756636f9a9a5.tar.gz cpython-76efd8e7a193d5e17f0f607ec5a2756636f9a9a5.tar.bz2 |
MAde a few things more orthogonal and did some cleanups:
- Applications now have their (minimal) main prrogram in
macapplication.c and the rest of the init code in macglue.c.
- A new define, USE_MAC_APPLET_SUPPORT, independent of
USE_MAC_SHARED_LIB
- chdir to script directory now done in PyMac_InitApplication.
Diffstat (limited to 'Mac')
-rw-r--r-- | Mac/Modules/config.c | 19 | ||||
-rw-r--r-- | Mac/Python/macapplication.c | 35 | ||||
-rw-r--r-- | Mac/Python/macglue.c | 56 |
3 files changed, 74 insertions, 36 deletions
diff --git a/Mac/Modules/config.c b/Mac/Modules/config.c index 32313a7..1ce7f77 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 <stdio.h> @@ -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 0000000..bac0620 --- /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 cab94ce..7135f33 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); +} |