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).
This commit is contained in:
Guido van Rossum 1998-02-06 22:27:24 +00:00
parent 31c4ed75fc
commit a61691e4e9
1 changed files with 31 additions and 3 deletions

View 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");