Band-aid solution to SF bug #470634: readlines() on linux requires 2 ^D's.

The problem is that if fread() returns a short count, we attempt
another fread() the next time through the loop, and apparently glibc
clears or ignores the eof condition so the second fread() requires
another ^D to make it see the eof condition.

According to the man page (and the C std, I hope) fread() can only
return a short count on error or eof.  I'm using that in the band-aid
solution to avoid calling fread() a second time after a short read.

Note that xreadlines() still has this problem: it calls
readlines(sizehint) until it gets a zero-length return.  Since
xreadlines() is mostly used for reading real files, I won't worry
about this until we get a bug report.
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index 8f903d1..18f9ce2 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -1045,6 +1045,7 @@
 	size_t totalread = 0;
 	char *p, *q, *end;
 	int err;
+	int shortread = 0;
 
 	if (f->f_fp == NULL)
 		return err_closed();
@@ -1053,10 +1054,16 @@
 	if ((list = PyList_New(0)) == NULL)
 		return NULL;
 	for (;;) {
-		Py_BEGIN_ALLOW_THREADS
-		errno = 0;
-		nread = fread(buffer+nfilled, 1, buffersize-nfilled, f->f_fp);
-		Py_END_ALLOW_THREADS
+		if (shortread)
+			nread = 0;
+		else {
+			Py_BEGIN_ALLOW_THREADS
+			errno = 0;
+			nread = fread(buffer+nfilled, 1,
+				      buffersize-nfilled, f->f_fp);
+			Py_END_ALLOW_THREADS
+			shortread = (nread < buffersize-nfilled);
+		}
 		if (nread == 0) {
 			sizehint = 0;
 			if (!ferror(f->f_fp))