summaryrefslogtreecommitdiffstats
path: root/Parser
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>2002-04-14 20:12:41 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>2002-04-14 20:12:41 (GMT)
commit7b8c7546ebc1fc3688ef95768fa8b82f0f205490 (patch)
tree2e14b243347a9c38c82e2e774d4b201f23149916 /Parser
parentdcd2dc2fffce8614c5d2b8d303a303a599b88a23 (diff)
downloadcpython-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.c11
-rw-r--r--Parser/tokenizer.c9
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");