diff -r a892a0dd8190 Python/bltinmodule.c --- a/Python/bltinmodule.c Tue Mar 22 15:57:03 2011 -0700 +++ b/Python/bltinmodule.c Wed Mar 23 00:23:46 2011 +0100 @@ -1520,12 +1520,39 @@ return NULL; } - if (end == NULL) + if (end == NULL) { err = PyFile_WriteString("\n", file); - else + if (err) + return NULL; + } + else { + PyObject *result = NULL; err = PyFile_WriteObject(end, file, Py_PRINT_RAW); - if (err) - return NULL; + if (err) + return NULL; + + /* if file is a terminal, flush it now */ + result = PyObject_CallMethod(file, "isatty", NULL); + if (result != NULL) { + int rc = PyObject_IsTrue(result); + Py_DECREF(result); + if (rc < 0) + return NULL; + + if (rc) { + result = PyObject_CallMethod(file, "flush", NULL); + + if (result != NULL) + Py_DECREF(result); + else + return NULL; + } + } + else { + /* no isatty() method, ignore it */ + PyErr_Clear(); + } + } Py_RETURN_NONE; }