diff Python/pythonrun.c @ 7206:3f255aedf621 legacy-trunk

Ehm, three unrelated changes. - Add Py_FrozenFlag, intended to suppress error messages fron getpath.c in frozen binaries. - Add Py_GetPythonHome() and Py_SetPythonHome(), intended to allow embedders to force a different PYTHONHOME. - Add new interface PyErr_PrintEx(flag); same as PyErr_Print() but flag determines whether sys.last_* are set or not. PyErr_Print() now simply calls PyErr_PrintEx(1).
author Guido van Rossum <guido@python.org>
date Fri, 06 Feb 1998 22:27:24 +0000
parents f5f305d7a617
children b5d52c415b15
line wrap: on
line diff
--- a/Python/pythonrun.c	Fri Feb 06 22:26:04 1998 +0000
+++ b/Python/pythonrun.c	Fri Feb 06 22:27:24 1998 +0000
@@ -77,6 +77,7 @@
 int Py_InteractiveFlag; /* Needed by Py_FdIsInteractive() below */
 int Py_NoSiteFlag; /* Suppress 'import site' */
 int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c */
+int Py_FrozenFlag; /* Needed by getpath.c */
 
 static int initialized = 0;
 
@@ -367,6 +368,24 @@
 	return progname;
 }
 
+static char *default_home = NULL;
+
+void
+Py_SetPythonHome(home)
+	char *home;
+{
+	default_home = home;
+}
+
+char *
+Py_GetPythonHome()
+{
+	char *home = default_home;
+	if (home == NULL)
+		home = getenv("PYTHONHOME");
+	return home;
+}
+
 /* Create __main__ module */
 
 static void
@@ -641,6 +660,13 @@
 void
 PyErr_Print()
 {
+	PyErr_PrintEx(1);
+}
+
+void
+PyErr_PrintEx(set_sys_last_vars)
+	int set_sys_last_vars;
+{
 	int err = 0;
 	PyObject *exception, *v, *tb, *f;
 	PyErr_Fetch(&exception, &v, &tb);
@@ -679,9 +705,11 @@
 			Py_Exit(1);
 		}
 	}
-	PySys_SetObject("last_type", exception);
-	PySys_SetObject("last_value", v);
-	PySys_SetObject("last_traceback", tb);
+	if (set_sys_last_vars) {
+		PySys_SetObject("last_type", exception);
+		PySys_SetObject("last_value", v);
+		PySys_SetObject("last_traceback", tb);
+	}
 	f = PySys_GetObject("stderr");
 	if (f == NULL)
 		fprintf(stderr, "lost sys.stderr\n");