summaryrefslogtreecommitdiffstats
path: root/Objects/fileobject.c
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2021-10-15 04:28:52 (GMT)
committerGitHub <noreply@github.com>2021-10-15 04:28:52 (GMT)
commit160c38df7fc7ba22dc687879c387bf643ffc3398 (patch)
tree13e394303a087244d8d8d62bd125166c90468842 /Objects/fileobject.c
parent77b24ba505744532d7cfd721b1c92d205e145180 (diff)
downloadcpython-160c38df7fc7ba22dc687879c387bf643ffc3398.zip
cpython-160c38df7fc7ba22dc687879c387bf643ffc3398.tar.gz
cpython-160c38df7fc7ba22dc687879c387bf643ffc3398.tar.bz2
closes bpo-45479: Degunkify Py_UniversalNewlineFgets. (GH-28965)
Remove dead variables and control flow.
Diffstat (limited to 'Objects/fileobject.c')
-rw-r--r--Objects/fileobject.c37
1 files changed, 5 insertions, 32 deletions
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index dc600c6..8eb6249 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -239,13 +239,7 @@ _PyLong_FileDescriptor_Converter(PyObject *o, void *ptr)
** Py_UniversalNewlineFgets is an fgets variation that understands
** all of \r, \n and \r\n conventions.
** The stream should be opened in binary mode.
-** If fobj is NULL the routine always does newline conversion, and
-** it may peek one char ahead to gobble the second char in \r\n.
-** If fobj is non-NULL it must be a PyFileObject. In this case there
-** is no readahead but in stead a flag is used to skip a following
-** \n on the next read. Also, if the file is open in binary mode
-** the whole conversion is skipped. Finally, the routine keeps track of
-** the different types of newlines seen.
+** The fobj parameter exists solely for legacy reasons and must be NULL.
** Note that we need no error handling: fgets() treats error and eof
** identically.
*/
@@ -254,7 +248,6 @@ Py_UniversalNewlineFgets(char *buf, int n, FILE *stream, PyObject *fobj)
{
char *p = buf;
int c;
- int newlinetypes = 0;
int skipnextlf = 0;
if (fobj) {
@@ -262,24 +255,15 @@ Py_UniversalNewlineFgets(char *buf, int n, FILE *stream, PyObject *fobj)
return NULL;
}
FLOCKFILE(stream);
- c = 'x'; /* Shut up gcc warning */
while (--n > 0 && (c = GETC(stream)) != EOF ) {
- if (skipnextlf ) {
+ if (skipnextlf) {
skipnextlf = 0;
if (c == '\n') {
/* Seeing a \n here with skipnextlf true
** means we saw a \r before.
*/
- newlinetypes |= NEWLINE_CRLF;
c = GETC(stream);
if (c == EOF) break;
- } else {
- /*
- ** Note that c == EOF also brings us here,
- ** so we're okay if the last char in the file
- ** is a CR.
- */
- newlinetypes |= NEWLINE_CR;
}
}
if (c == '\r') {
@@ -289,26 +273,15 @@ Py_UniversalNewlineFgets(char *buf, int n, FILE *stream, PyObject *fobj)
*/
skipnextlf = 1;
c = '\n';
- } else if ( c == '\n') {
- newlinetypes |= NEWLINE_LF;
}
*p++ = c;
if (c == '\n') break;
}
- /* if ( c == EOF && skipnextlf )
- newlinetypes |= NEWLINE_CR; */
FUNLOCKFILE(stream);
*p = '\0';
- if ( skipnextlf ) {
- /* If we have no file object we cannot save the
- ** skipnextlf flag. We have to readahead, which
- ** will cause a pause if we're reading from an
- ** interactive stream, but that is very unlikely
- ** unless we're doing something silly like
- ** exec(open("/dev/tty").read()).
- */
- c = GETC(stream);
- if ( c != '\n' )
+ if (skipnextlf) {
+ int c = GETC(stream);
+ if (c != '\n')
ungetc(c, stream);
}
if (p == buf)