Change in when and how stdin and stdout are set to line-buffering.

This used to be done whenever stdin was interactive.  Now we only do
it when the -i flag is given.  Also (and this is the real reason for
this fix) we explicitly allocate a buffer -- this seems to be
necessary on Windows.
This commit is contained in:
Guido van Rossum 1997-04-11 21:57:53 +00:00
parent 7844e38a98
commit 2a212191f8
1 changed files with 5 additions and 3 deletions

View File

@ -203,9 +203,11 @@ main(argc, argv)
setvbuf(stderr, (char *)NULL, _IOLBF, BUFSIZ); setvbuf(stderr, (char *)NULL, _IOLBF, BUFSIZ);
#endif #endif
} }
else if (stdin_is_interactive) { else if (Py_InteractiveFlag) {
setvbuf(stdin, (char *)NULL, _IOLBF, BUFSIZ); char *ibuffer = malloc(BUFSIZ);
setvbuf(stdout, (char *)NULL, _IOLBF, BUFSIZ); char *obuffer = malloc(BUFSIZ);
setvbuf(stdin, ibuffer, _IOLBF, BUFSIZ);
setvbuf(stdout, obuffer, _IOLBF, BUFSIZ);
/* Leave stderr alone - it should be unbuffered anyway. */ /* Leave stderr alone - it should be unbuffered anyway. */
} }