From a61691e4e9e43da90fa2a5fa1c6764fe49e4dcdb Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 6 Feb 1998 22:27:24 +0000 Subject: [PATCH] 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). --- Python/pythonrun.c | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 10078606426..4cd0e3f3c24 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -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");