From: Guido van Rossum Date: Fri, 6 Feb 1998 22:27:24 +0000 (+0000) Subject: Ehm, three unrelated changes. X-Git-Tag: v1.5.1~848 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a61691e4e9e43da90fa2a5fa1c6764fe49e4dcdb;p=thirdparty%2FPython%2Fcpython.git 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). --- diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 100786064263..4cd0e3f3c24a 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");