diff options
author | Benjamin Peterson <benjamin@python.org> | 2021-10-15 04:28:52 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-15 04:28:52 (GMT) |
commit | 160c38df7fc7ba22dc687879c387bf643ffc3398 (patch) | |
tree | 13e394303a087244d8d8d62bd125166c90468842 /Objects/fileobject.c | |
parent | 77b24ba505744532d7cfd721b1c92d205e145180 (diff) | |
download | cpython-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.c | 37 |
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) |