summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>1997-05-23 15:35:14 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>1997-05-23 15:35:14 (GMT)
commita39f1b0ce293652874cb70529cd3c92c919f3210 (patch)
tree6d65d42910a000ed660b6a06c9f1eea244eea642
parent570e4b7ad12031745316c019247c577b5f143b22 (diff)
downloadcpython-a39f1b0ce293652874cb70529cd3c92c919f3210.zip
cpython-a39f1b0ce293652874cb70529cd3c92c919f3210.tar.gz
cpython-a39f1b0ce293652874cb70529cd3c92c919f3210.tar.bz2
- Added Py_GetProgramFullPath
- Added PyMac_StopGUSISpin and have it called at exit time (fixes crash when exiting with sockets open) - Added PLstr... funcs needed by gusi: those provided by StdCLib are broken under cfm68k
-rw-r--r--Mac/Python/macglue.c52
-rw-r--r--Mac/Python/macmain.c15
2 files changed, 59 insertions, 8 deletions
diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c
index cc55d08..480b741 100644
--- a/Mac/Python/macglue.c
+++ b/Mac/Python/macglue.c
@@ -215,7 +215,57 @@ PyMac_SetGUSISpin() {
GUSISetHook(GUSI_SpinHook, (GUSIHook)PyMac_GUSISpin);
}
-#endif
+/* Called at exit() time thru atexit(), to stop event processing */
+void
+PyMac_StopGUSISpin() {
+ PyMac_ConsoleIsDead = 1;
+}
+
+/*
+** Replacement routines for the PLstr... functions so we don't need
+** StdCLib. Moreover, that implementation is broken under cfm68k...
+*/
+void
+PLstrcpy(to, fr)
+ unsigned char *to, *fr;
+{
+ memcpy(to, fr, fr[0]+1);
+}
+
+int
+PLstrcmp(s1, s2)
+ unsigned char *s1, *s2;
+{
+ int res;
+ int l = s1[0] < s2[0] ? s1[0] : s2[0];
+
+ res = memcmp(s1+1, s2+1, l);
+ if ( res != 0 )
+ return res;
+
+ if ( s1 < s2 )
+ return -1;
+ else if ( s1 > s2 )
+ return 1;
+ else
+ return 0;
+}
+
+unsigned char *
+PLstrrchr(str, chr)
+ unsigned char *str;
+ unsigned char chr;
+{
+ unsigned char *ptr = 0;
+ unsigned char *p;
+
+ for(p=str+1; p<str+str[0]; p++)
+ if ( *p == chr )
+ ptr = p;
+ return ptr;
+}
+
+#endif /* USE_GUSI */
/* Convert C to Pascal string. Returns pointer to static buffer. */
diff --git a/Mac/Python/macmain.c b/Mac/Python/macmain.c
index 9e8fbc5..811258a 100644
--- a/Mac/Python/macmain.c
+++ b/Mac/Python/macmain.c
@@ -209,6 +209,7 @@ init_common(int *argcp, char ***argvp, int embedded)
GUSIDefaultSetup();
PyMac_SetGUSISpin();
PyMac_SetGUSIOptions();
+ atexit(PyMac_StopGUSISpin);
#endif
#ifdef USE_SIOUX
@@ -464,13 +465,6 @@ PyMac_Exit(status)
}
else
SIOUXSettings.autocloseonquit = 1;
-#ifdef USE_GUSI
- /*
- ** Workaround for Sioux/GUSI combo: we should not call
- ** SiouxHandleOneEvent after the window is closed
- */
- PyMac_ConsoleIsDead = 1;
-#endif /* USE_GUSI */
#endif /* USE_SIOUX */
#ifdef THINK_C
console_options.pause_atexit = keep;
@@ -487,6 +481,13 @@ Py_GetProgramName()
return orig_argv[0];
}
+/* The same, but used differently */
+char *
+Py_GetProgramFullPath()
+{
+ return Py_GetProgramName();
+}
+
/* Make the *original* argc/argv available to other modules.
This is rare, but it is needed by the secureware extension. */