]> granicus.if.org Git - python/commitdiff
Ehm, three unrelated changes.
authorGuido van Rossum <guido@python.org>
Fri, 6 Feb 1998 22:27:24 +0000 (22:27 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 6 Feb 1998 22:27:24 +0000 (22:27 +0000)
- 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).

Python/pythonrun.c

index 100786064263c4be1e861a3e76a72411a6dd7baf..4cd0e3f3c24a7c36ed331d093667f9bc3da87618 100644 (file)
@@ -77,6 +77,7 @@ int Py_VerboseFlag; /* Needed by import.c */
 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 @@ Py_GetProgramName()
        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
@@ -640,6 +659,13 @@ finally:
 
 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;
@@ -679,9 +705,11 @@ PyErr_Print()
                        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");