diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2002-04-14 20:12:41 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2002-04-14 20:12:41 (GMT) |
commit | 7b8c7546ebc1fc3688ef95768fa8b82f0f205490 (patch) | |
tree | 2e14b243347a9c38c82e2e774d4b201f23149916 /Parser | |
parent | dcd2dc2fffce8614c5d2b8d303a303a599b88a23 (diff) | |
download | cpython-7b8c7546ebc1fc3688ef95768fa8b82f0f205490.zip cpython-7b8c7546ebc1fc3688ef95768fa8b82f0f205490.tar.gz cpython-7b8c7546ebc1fc3688ef95768fa8b82f0f205490.tar.bz2 |
Mass checkin of universal newline support.
Highlights: import and friends will understand any of \r, \n and \r\n
as end of line. Python file input will do the same if you use mode 'U'.
Everything can be disabled by configuring with --without-universal-newlines.
See PEP278 for details.
Diffstat (limited to 'Parser')
-rw-r--r-- | Parser/pgenmain.c | 11 | ||||
-rw-r--r-- | Parser/tokenizer.c | 9 |
2 files changed, 16 insertions, 4 deletions
diff --git a/Parser/pgenmain.c b/Parser/pgenmain.c index 2a284bc..d25cbd4 100644 --- a/Parser/pgenmain.c +++ b/Parser/pgenmain.c @@ -13,6 +13,7 @@ - check for duplicate definitions of names (instead of fatal err) */ +#include "Python.h" #include "pgenheaders.h" #include "grammar.h" #include "node.h" @@ -182,6 +183,16 @@ PyOS_Readline(char *prompt) return PyMem_REALLOC(p, n+1); } +#ifdef WITH_UNIVERSAL_NEWLINES +/* No-nonsense fgets */ +char * +Py_UniversalNewlineFgets(char *buf, int n, FILE *stream, PyObject *fobj) +{ + return fgets(buf, n, stream); +} +#endif + + #include <stdarg.h> void diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index 324d9b6..b4e0fbf 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -1,6 +1,7 @@ /* Tokenizer implementation */ +#include "Python.h" #include "pgenheaders.h" #include <ctype.h> @@ -245,8 +246,8 @@ tok_nextc(register struct tok_state *tok) } tok->end = tok->buf + BUFSIZ; } - if (fgets(tok->buf, (int)(tok->end - tok->buf), - tok->fp) == NULL) { + if (Py_UniversalNewlineFgets(tok->buf, (int)(tok->end - tok->buf), + tok->fp, NULL) == NULL) { tok->done = E_EOF; done = 1; } @@ -284,9 +285,9 @@ tok_nextc(register struct tok_state *tok) tok->end = tok->buf + newsize; tok->start = curstart < 0 ? NULL : tok->buf + curstart; - if (fgets(tok->inp, + if (Py_UniversalNewlineFgets(tok->inp, (int)(tok->end - tok->inp), - tok->fp) == NULL) { + tok->fp, NULL) == NULL) { /* Last line does not end in \n, fake one */ strcpy(tok->inp, "\n"); |