- if (python_run_statements(msg, &exmsg)) {
- if (exmsg) {
- reply("PYMSG_RUN_EXCEPTION", exmsg);
- free(exmsg);
+ py_retval = PyRun_String(msg, Py_file_input, py_globals, py_locals);
+ if (py_retval == NULL) {
+ PyErr_Fetch(&extype, &exvalue, &extraceback);
+ if (exvalue != NULL) {
+ exvaluestr = PyObject_Str(exvalue);
+ exmsg = strdup(PyString_AS_STRING(exvaluestr));
+ exmsgptr = exmsg;
+ while (exmsgptr && *exmsgptr) {
+ if (*exmsgptr == '\n' || *exmsgptr == '\r' || *exmsgptr == '\t')
+ *exmsgptr = ' ';
+ exmsgptr++;
+ }
+ }
+ if (extype != NULL && exvalue != NULL && PyType_Check(extype)) {
+ reply("PYMSG_RUN_EXCEPTION", ((PyTypeObject*)extype)->tp_name, exmsg);