summaryrefslogtreecommitdiffstats
path: root/Mac
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>1995-02-24 22:53:16 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>1995-02-24 22:53:16 (GMT)
commit76efd8e7a193d5e17f0f607ec5a2756636f9a9a5 (patch)
treefbd1495cc56a17715fbf6e8d175bcc7503c6330c /Mac
parent397c3fb4d7b0e3bca7471e2f3e166b59d769880f (diff)
downloadcpython-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.c19
-rw-r--r--Mac/Python/macapplication.c35
-rw-r--r--Mac/Python/macglue.c56
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);
+}