mirror of https://github.com/python/cpython
Remove support for --without-universal-newlines (see PEP 11).
This commit is contained in:
parent
f1afe6682c
commit
db6080507d
|
@ -20,11 +20,9 @@ typedef struct {
|
|||
char* f_bufend; /* Points after last occupied position */
|
||||
char* f_bufptr; /* Current buffer position */
|
||||
char *f_setbuf; /* Buffer for setbuf(3) and setvbuf(3) */
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
int f_univ_newline; /* Handle any newline convention */
|
||||
int f_newlinetypes; /* Types of newlines seen */
|
||||
int f_skipnextlf; /* Skip next \n */
|
||||
#endif
|
||||
PyObject *f_encoding;
|
||||
} PyFileObject;
|
||||
|
||||
|
@ -51,19 +49,13 @@ PyAPI_FUNC(int) PyObject_AsFileDescriptor(PyObject *);
|
|||
*/
|
||||
PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding;
|
||||
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
/* Routines to replace fread() and fgets() which accept any of \r, \n
|
||||
or \r\n as line terminators.
|
||||
*/
|
||||
#define PY_STDIOTEXTMODE "b"
|
||||
char *Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *);
|
||||
size_t Py_UniversalNewlineFread(char *, size_t, FILE *, PyObject *);
|
||||
#else
|
||||
#define PY_STDIOTEXTMODE ""
|
||||
#define Py_UniversalNewlineFgets(buf, len, fp, obj) fgets((buf), (len), (fp))
|
||||
#define Py_UniversalNewlineFread(buf, len, fp, obj) \
|
||||
fread((buf), 1, (len), (fp))
|
||||
#endif /* WITH_UNIVERSAL_NEWLINES */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -330,6 +330,11 @@ Tools/Demos
|
|||
Build
|
||||
-----
|
||||
|
||||
- Systems requiring the D4, D6 or D7 variants of pthreads are no longer
|
||||
supported (see PEP 11).
|
||||
|
||||
- Universal newline support can no longer be disabled (see PEP 11).
|
||||
|
||||
- Support for DGUX, SunOS 4, IRIX 4 and Minix was removed (see PEP 11).
|
||||
|
||||
- Support for systems requiring --with-dl-dld or --with-sgi-dl was removed
|
||||
|
|
|
@ -73,13 +73,11 @@ static char __author__[] =
|
|||
#define RELEASE_LOCK(obj)
|
||||
#endif
|
||||
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
/* Bits in f_newlinetypes */
|
||||
#define NEWLINE_UNKNOWN 0 /* No newline seen, yet */
|
||||
#define NEWLINE_CR 1 /* \r newline seen */
|
||||
#define NEWLINE_LF 2 /* \n newline seen */
|
||||
#define NEWLINE_CRLF 4 /* \r\n newline seen */
|
||||
#endif
|
||||
|
||||
/* ===================================================================== */
|
||||
/* Structure definitions. */
|
||||
|
@ -94,11 +92,9 @@ typedef struct {
|
|||
|
||||
int f_softspace; /* Flag used by 'print' command */
|
||||
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
int f_univ_newline; /* Handle any newline convention */
|
||||
int f_newlinetypes; /* Types of newlines seen */
|
||||
int f_skipnextlf; /* Skip next \n */
|
||||
#endif
|
||||
|
||||
BZFILE *fp;
|
||||
int mode;
|
||||
|
@ -227,11 +223,9 @@ Util_GetLine(BZ2FileObject *f, int n)
|
|||
size_t increment; /* amount to increment the buffer */
|
||||
PyObject *v;
|
||||
int bzerror;
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
int newlinetypes = f->f_newlinetypes;
|
||||
int skipnextlf = f->f_skipnextlf;
|
||||
int univ_newline = f->f_univ_newline;
|
||||
#endif
|
||||
|
||||
total_v_size = n > 0 ? n : 100;
|
||||
v = PyString_FromStringAndSize((char *)NULL, total_v_size);
|
||||
|
@ -243,7 +237,6 @@ Util_GetLine(BZ2FileObject *f, int n)
|
|||
|
||||
for (;;) {
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
if (univ_newline) {
|
||||
while (1) {
|
||||
BZ2_bzRead(&bzerror, f->fp, &c, 1);
|
||||
|
@ -277,17 +270,14 @@ Util_GetLine(BZ2FileObject *f, int n)
|
|||
if (bzerror == BZ_STREAM_END && skipnextlf)
|
||||
newlinetypes |= NEWLINE_CR;
|
||||
} else /* If not universal newlines use the normal loop */
|
||||
#endif
|
||||
do {
|
||||
BZ2_bzRead(&bzerror, f->fp, &c, 1);
|
||||
f->pos++;
|
||||
*buf++ = c;
|
||||
} while (bzerror == BZ_OK && c != '\n' && buf != end);
|
||||
Py_END_ALLOW_THREADS
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
f->f_newlinetypes = newlinetypes;
|
||||
f->f_skipnextlf = skipnextlf;
|
||||
#endif
|
||||
if (bzerror == BZ_STREAM_END) {
|
||||
f->size = f->pos;
|
||||
f->mode = MODE_READ_EOF;
|
||||
|
@ -323,9 +313,6 @@ Util_GetLine(BZ2FileObject *f, int n)
|
|||
return v;
|
||||
}
|
||||
|
||||
#ifndef WITH_UNIVERSAL_NEWLINES
|
||||
#define Util_UnivNewlineRead(a,b,c,d,e) BZ2_bzRead(a,b,c,d)
|
||||
#else
|
||||
/* This is a hacked version of Python's
|
||||
* fileobject.c:Py_UniversalNewlineFread(). */
|
||||
size_t
|
||||
|
@ -393,7 +380,6 @@ Util_UnivNewlineRead(int *bzerror, BZFILE *stream,
|
|||
f->f_skipnextlf = skipnextlf;
|
||||
return dst - buf;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* This is a hacked version of Python's fileobject.c:drop_readahead(). */
|
||||
static void
|
||||
|
@ -1190,7 +1176,6 @@ static PyMethodDef BZ2File_methods[] = {
|
|||
/* ===================================================================== */
|
||||
/* Getters and setters of BZ2File. */
|
||||
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
/* This is a hacked version of Python's fileobject.c:get_newlines(). */
|
||||
static PyObject *
|
||||
BZ2File_get_newlines(BZ2FileObject *self, void *closure)
|
||||
|
@ -1220,7 +1205,6 @@ BZ2File_get_newlines(BZ2FileObject *self, void *closure)
|
|||
return NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static PyObject *
|
||||
BZ2File_get_closed(BZ2FileObject *self, void *closure)
|
||||
|
@ -1243,10 +1227,8 @@ BZ2File_get_name(BZ2FileObject *self, void *closure)
|
|||
static PyGetSetDef BZ2File_getset[] = {
|
||||
{"closed", (getter)BZ2File_get_closed, NULL,
|
||||
"True if the file is closed"},
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
{"newlines", (getter)BZ2File_get_newlines, NULL,
|
||||
"end-of-line convention used in this file"},
|
||||
#endif
|
||||
{"mode", (getter)BZ2File_get_mode, NULL,
|
||||
"file mode ('r', 'w', or 'U')"},
|
||||
{"name", (getter)BZ2File_get_name, NULL,
|
||||
|
@ -1309,9 +1291,7 @@ BZ2File_init(BZ2FileObject *self, PyObject *args, PyObject *kwargs)
|
|||
break;
|
||||
|
||||
case 'U':
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
self->f_univ_newline = 1;
|
||||
#endif
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -1441,7 +1421,6 @@ exist, and truncated otherwise. If the buffering argument is given, 0 means\n\
|
|||
unbuffered, and larger numbers specify the buffer size. If compresslevel\n\
|
||||
is given, must be a number between 1 and 9.\n\
|
||||
")
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
PyDoc_STR(
|
||||
"\n\
|
||||
Add a 'U' to mode to open the file for input with universal newline\n\
|
||||
|
@ -1451,7 +1430,6 @@ for this attribute is one of None (no newline read yet), '\\r', '\\n',\n\
|
|||
'\\r\\n' or a tuple containing all the newline types seen. Universal\n\
|
||||
newlines are available only when reading.\n\
|
||||
")
|
||||
#endif
|
||||
;
|
||||
|
||||
static PyTypeObject BZ2File_Type = {
|
||||
|
|
|
@ -41,13 +41,11 @@
|
|||
#define FUNLOCKFILE(f)
|
||||
#endif
|
||||
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
/* Bits in f_newlinetypes */
|
||||
#define NEWLINE_UNKNOWN 0 /* No newline seen, yet */
|
||||
#define NEWLINE_CR 1 /* \r newline seen */
|
||||
#define NEWLINE_LF 2 /* \n newline seen */
|
||||
#define NEWLINE_CRLF 4 /* \r\n newline seen */
|
||||
#endif
|
||||
|
||||
FILE *
|
||||
PyFile_AsFile(PyObject *f)
|
||||
|
@ -119,11 +117,9 @@ fill_file_fields(PyFileObject *f, FILE *fp, char *name, char *mode,
|
|||
f->f_softspace = 0;
|
||||
f->f_binary = strchr(mode,'b') != NULL;
|
||||
f->f_buf = NULL;
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
f->f_univ_newline = (strchr(mode, 'U') != NULL);
|
||||
f->f_newlinetypes = NEWLINE_UNKNOWN;
|
||||
f->f_skipnextlf = 0;
|
||||
#endif
|
||||
Py_INCREF(Py_None);
|
||||
f->f_encoding = Py_None;
|
||||
|
||||
|
@ -165,17 +161,8 @@ open_the_file(PyFileObject *f, char *name, char *mode)
|
|||
else
|
||||
#endif
|
||||
{
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
if (strcmp(mode, "U") == 0 || strcmp(mode, "rU") == 0)
|
||||
mode = "rb";
|
||||
#else
|
||||
/* Compatibility: specifying U in a Python without universal
|
||||
** newlines is allowed, and the file is opened as a normal text
|
||||
** file.
|
||||
*/
|
||||
if (strcmp(mode, "U") == 0 || strcmp(mode, "rU") == 0)
|
||||
mode = "r";
|
||||
#endif
|
||||
#ifdef MS_WINDOWS
|
||||
if (PyUnicode_Check(f->f_name)) {
|
||||
PyObject *wmode;
|
||||
|
@ -494,9 +481,7 @@ file_seek(PyFileObject *f, PyObject *args)
|
|||
clearerr(f->f_fp);
|
||||
return NULL;
|
||||
}
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
f->f_skipnextlf = 0;
|
||||
#endif
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
@ -629,7 +614,6 @@ file_tell(PyFileObject *f)
|
|||
clearerr(f->f_fp);
|
||||
return NULL;
|
||||
}
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
if (f->f_skipnextlf) {
|
||||
int c;
|
||||
c = GETC(f->f_fp);
|
||||
|
@ -638,7 +622,6 @@ file_tell(PyFileObject *f)
|
|||
f->f_skipnextlf = 0;
|
||||
} else if (c != EOF) ungetc(c, f->f_fp);
|
||||
}
|
||||
#endif
|
||||
#if !defined(HAVE_LARGEFILE_SUPPORT)
|
||||
return PyInt_FromLong(pos);
|
||||
#else
|
||||
|
@ -1070,18 +1053,12 @@ get_line(PyFileObject *f, int n)
|
|||
size_t used_v_size; /* # used slots in buffer */
|
||||
size_t increment; /* amount to increment the buffer */
|
||||
PyObject *v;
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
int newlinetypes = f->f_newlinetypes;
|
||||
int skipnextlf = f->f_skipnextlf;
|
||||
int univ_newline = f->f_univ_newline;
|
||||
#endif
|
||||
|
||||
#if defined(USE_FGETS_IN_GETLINE)
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
if (n <= 0 && !univ_newline )
|
||||
#else
|
||||
if (n <= 0)
|
||||
#endif
|
||||
return getline_via_fgets(fp);
|
||||
#endif
|
||||
total_v_size = n > 0 ? n : 100;
|
||||
|
@ -1094,7 +1071,6 @@ get_line(PyFileObject *f, int n)
|
|||
for (;;) {
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
FLOCKFILE(fp);
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
if (univ_newline) {
|
||||
c = 'x'; /* Shut up gcc warning */
|
||||
while ( buf != end && (c = GETC(fp)) != EOF ) {
|
||||
|
@ -1123,17 +1099,14 @@ get_line(PyFileObject *f, int n)
|
|||
if ( c == EOF && skipnextlf )
|
||||
newlinetypes |= NEWLINE_CR;
|
||||
} else /* If not universal newlines use the normal loop */
|
||||
#endif
|
||||
while ((c = GETC(fp)) != EOF &&
|
||||
(*buf++ = c) != '\n' &&
|
||||
buf != end)
|
||||
;
|
||||
FUNLOCKFILE(fp);
|
||||
Py_END_ALLOW_THREADS
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
f->f_newlinetypes = newlinetypes;
|
||||
f->f_skipnextlf = skipnextlf;
|
||||
#endif
|
||||
if (c == '\n')
|
||||
break;
|
||||
if (c == EOF) {
|
||||
|
@ -1677,7 +1650,6 @@ get_closed(PyFileObject *f, void *closure)
|
|||
{
|
||||
return PyBool_FromLong((long)(f->f_fp == 0));
|
||||
}
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
static PyObject *
|
||||
get_newlines(PyFileObject *f, void *closure)
|
||||
{
|
||||
|
@ -1706,14 +1678,11 @@ get_newlines(PyFileObject *f, void *closure)
|
|||
return NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static PyGetSetDef file_getsetlist[] = {
|
||||
{"closed", (getter)get_closed, NULL, "True if the file is closed"},
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
{"newlines", (getter)get_newlines, NULL,
|
||||
"end-of-line convention used in this file"},
|
||||
#endif
|
||||
{0},
|
||||
};
|
||||
|
||||
|
@ -1931,7 +1900,6 @@ PyDoc_STR(
|
|||
"If the buffering argument is given, 0 means unbuffered, 1 means line\n"
|
||||
"buffered, and larger numbers specify the buffer size.\n"
|
||||
)
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
PyDoc_STR(
|
||||
"Add a 'U' to mode to open the file for input with universal newline\n"
|
||||
"support. Any line ending in the input file will be seen as a '\\n'\n"
|
||||
|
@ -1941,7 +1909,6 @@ PyDoc_STR(
|
|||
"\n"
|
||||
"'U' cannot be combined with 'w' or '+' mode.\n"
|
||||
)
|
||||
#endif /* WITH_UNIVERSAL_NEWLINES */
|
||||
PyDoc_STR(
|
||||
"\n"
|
||||
"Note: open() is an alias for file()."
|
||||
|
@ -2181,7 +2148,6 @@ int PyObject_AsFileDescriptor(PyObject *o)
|
|||
return fd;
|
||||
}
|
||||
|
||||
#ifdef WITH_UNIVERSAL_NEWLINES
|
||||
/* From here on we need access to the real fgets and fread */
|
||||
#undef fgets
|
||||
#undef fread
|
||||
|
@ -2359,4 +2325,3 @@ Py_UniversalNewlineFread(char *buf, size_t n,
|
|||
f->f_skipnextlf = skipnextlf;
|
||||
return dst - buf;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -53,9 +53,6 @@
|
|||
/* enable the GC module */
|
||||
#define WITH_CYCLE_GC 1
|
||||
|
||||
/* Define if you want to read files with foreign newlines. */
|
||||
#define WITH_UNIVERSAL_NEWLINES 1
|
||||
|
||||
/* Define if you want documentation strings in extension modules */
|
||||
#define WITH_DOC_STRINGS 1
|
||||
|
||||
|
|
|
@ -397,9 +397,6 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
|
|||
/* Use Python's own small-block memory-allocator. */
|
||||
#define WITH_PYMALLOC 1
|
||||
|
||||
/* Enable \n, \r, \r\n line ends on import; also the 'U' mode flag for open. */
|
||||
#define WITH_UNIVERSAL_NEWLINES 1
|
||||
|
||||
/* Define if you have clock. */
|
||||
/* #define HAVE_CLOCK */
|
||||
|
||||
|
|
|
@ -145,14 +145,12 @@ PyOS_Readline(FILE *sys_stdin, FILE *sys_stdout, 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>
|
||||
|
|
|
@ -226,9 +226,6 @@
|
|||
one supplied by Python itself. (see Include/unicodectype.h). */
|
||||
#undef WANT_WCTYPE_FUNCTIONS
|
||||
|
||||
/* Define if you want to read files with foreign newlines. */
|
||||
#define WITH_UNIVERSAL_NEWLINES 1
|
||||
|
||||
/* Define if you want documentation strings in extension modules */
|
||||
#define WITH_DOC_STRINGS 1
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#! /bin/sh
|
||||
# From configure.in Revision: 1.449 .
|
||||
# From configure.in Revision: 1.450 .
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.57 for python 2.4.
|
||||
#
|
||||
|
@ -866,8 +866,6 @@ Optional Packages:
|
|||
--with(out)-thread[=DIRECTORY]
|
||||
deprecated; use --with(out)-threads
|
||||
--with-pth use GNU pth threading libraries
|
||||
--with(out)-universal-newlines
|
||||
disable/enable foreign newlines
|
||||
--with(out)-doc-strings disable/enable documentation strings
|
||||
--with(out)-pymalloc disable/enable specialized mallocs
|
||||
--with-wctype-functions use wctype.h functions
|
||||
|
@ -11961,33 +11959,6 @@ if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
|
|||
fi
|
||||
fi
|
||||
|
||||
# Check for universal newline support
|
||||
echo "$as_me:$LINENO: checking for --with-universal-newlines" >&5
|
||||
echo $ECHO_N "checking for --with-universal-newlines... $ECHO_C" >&6
|
||||
|
||||
# Check whether --with-universal-newlines or --without-universal-newlines was given.
|
||||
if test "${with_universal_newlines+set}" = set; then
|
||||
withval="$with_universal_newlines"
|
||||
|
||||
fi;
|
||||
|
||||
if test -z "$with_universal_newlines"
|
||||
then with_universal_newlines="yes"
|
||||
fi
|
||||
if test "$with_universal_newlines" = "no"
|
||||
then
|
||||
echo --without-universal-newlines is unsupported, see README
|
||||
exit 1
|
||||
else
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define WITH_UNIVERSAL_NEWLINES 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: $with_universal_newlines" >&5
|
||||
echo "${ECHO_T}$with_universal_newlines" >&6
|
||||
|
||||
# Check for --with-doc-strings
|
||||
echo "$as_me:$LINENO: checking for --with-doc-strings" >&5
|
||||
echo $ECHO_N "checking for --with-doc-strings... $ECHO_C" >&6
|
||||
|
|
18
configure.in
18
configure.in
|
@ -1885,24 +1885,6 @@ if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
|
|||
fi
|
||||
fi
|
||||
|
||||
# Check for universal newline support
|
||||
AC_MSG_CHECKING(for --with-universal-newlines)
|
||||
AC_ARG_WITH(universal-newlines,
|
||||
AC_HELP_STRING(--with(out)-universal-newlines, disable/enable foreign newlines))
|
||||
|
||||
if test -z "$with_universal_newlines"
|
||||
then with_universal_newlines="yes"
|
||||
fi
|
||||
if test "$with_universal_newlines" = "no"
|
||||
then
|
||||
echo --without-universal-newlines is unsupported, see README
|
||||
exit 1
|
||||
else
|
||||
AC_DEFINE(WITH_UNIVERSAL_NEWLINES, 1,
|
||||
[Define if you want to read files with foreign newlines.])
|
||||
fi
|
||||
AC_MSG_RESULT($with_universal_newlines)
|
||||
|
||||
# Check for --with-doc-strings
|
||||
AC_MSG_CHECKING(for --with-doc-strings)
|
||||
AC_ARG_WITH(doc-strings,
|
||||
|
|
|
@ -792,9 +792,6 @@
|
|||
/* Define if you want to compile in rudimentary thread support */
|
||||
#undef WITH_THREAD
|
||||
|
||||
/* Define if you want to read files with foreign newlines. */
|
||||
#undef WITH_UNIVERSAL_NEWLINES
|
||||
|
||||
/* Define to 1 if your processor stores words with the most significant byte
|
||||
first (like Motorola and SPARC, unlike Intel and VAX). */
|
||||
#undef WORDS_BIGENDIAN
|
||||
|
|
Loading…
Reference in New Issue