Apply str() to sys.ps1 or sys.ps2 before using them as a prompt, so

you can assign an object whose str() evaluates to the current
directory (or whatever).
This commit is contained in:
Guido van Rossum 1997-11-25 20:58:13 +00:00
parent 84cca446f2
commit ddc3fb5734
1 changed files with 14 additions and 16 deletions

View File

@ -459,24 +459,22 @@ PyRun_InteractiveOne(fp, filename)
PyObject *m, *d, *v, *w;
node *n;
perrdetail err;
char *ps1, *ps2;
char *ps1 = "", *ps2 = "";
v = PySys_GetObject("ps1");
if (v != NULL) {
v = PyObject_Str(v);
if (v == NULL)
PyErr_Clear();
else if (PyString_Check(v))
ps1 = PyString_AsString(v);
}
w = PySys_GetObject("ps2");
if (v != NULL && PyString_Check(v)) {
Py_INCREF(v);
ps1 = PyString_AsString(v);
}
else {
v = NULL;
ps1 = "";
}
if (w != NULL && PyString_Check(w)) {
Py_INCREF(w);
ps2 = PyString_AsString(w);
}
else {
w = NULL;
ps2 = "";
if (w != NULL) {
w = PyObject_Str(w);
if (w == NULL)
PyErr_Clear();
else if (PyString_Check(w))
ps2 = PyString_AsString(w);
}
Py_BEGIN_ALLOW_THREADS
n = PyParser_ParseFile(fp, filename, &_PyParser_Grammar,