Index: dist/src/Include/fileobject.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/fileobject.h,v retrieving revision 2.34 diff -u -r2.34 fileobject.h --- dist/src/Include/fileobject.h 7 Feb 2004 13:53:45 -0000 2.34 +++ dist/src/Include/fileobject.h 29 Mar 2004 16:03:25 -0000 @@ -52,7 +52,11 @@ /* Routines to replace fread() and fgets() which accept any of \r, \n or \r\n as line terminators. */ +#ifdef Py_USE_RECORD_IO +#define PY_STDIOTEXTMODE "" +#else #define PY_STDIOTEXTMODE "b" +#endif char *Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *); size_t Py_UniversalNewlineFread(char *, size_t, FILE *, PyObject *); Index: dist/src/Modules/bz2module.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/bz2module.c,v retrieving revision 1.22 diff -u -r1.22 bz2module.c --- dist/src/Modules/bz2module.c 14 Feb 2004 00:02:45 -0000 1.22 +++ dist/src/Modules/bz2module.c 29 Mar 2004 16:12:58 -0000 @@ -1291,7 +1291,11 @@ break; case 'U': +#ifdef Py_USE_RECORD_IO + self->f_univ_newline = 0; +#else self->f_univ_newline = 1; +#endif break; default: Index: dist/src/Objects/fileobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/fileobject.c,v retrieving revision 2.189 diff -u -r2.189 fileobject.c --- dist/src/Objects/fileobject.c 21 Mar 2004 20:24:07 -0000 2.189 +++ dist/src/Objects/fileobject.c 29 Mar 2004 16:13:21 -0000 @@ -15,6 +15,11 @@ #include #endif +#ifdef __VMS +/* fseeko,... defined into stdio.h */ +#include +#endif + #ifdef _MSC_VER /* Need GetVersion to see if on NT so safe to use _wfopen */ #define WIN32_LEAN_AND_MEAN @@ -115,7 +120,11 @@ f->f_softspace = 0; f->f_binary = strchr(mode,'b') != NULL; f->f_buf = NULL; +#ifdef Py_USE_RECORD_IO + f->f_univ_newline = 0; +#else f->f_univ_newline = (strchr(mode, 'U') != NULL); +#endif f->f_newlinetypes = NEWLINE_UNKNOWN; f->f_skipnextlf = 0; Py_INCREF(Py_None); @@ -160,7 +169,7 @@ #endif { if (strcmp(mode, "U") == 0 || strcmp(mode, "rU") == 0) - mode = "rb"; + mode = "r"PY_STDIOTEXTMODE; #ifdef MS_WINDOWS if (PyUnicode_Check(f->f_name)) { PyObject *wmode; @@ -178,7 +187,11 @@ #endif if (NULL == f->f_fp && NULL != name) { Py_BEGIN_ALLOW_THREADS +#ifdef __VMS + f->f_fp = fopen(name, mode, "ctxt=xplct"); +#else f->f_fp = fopen(name, mode); +#endif Py_END_ALLOW_THREADS } } @@ -1286,8 +1299,14 @@ } if (nread == 0) { sizehint = 0; +#ifdef __VMS + /* Under OpenVMS no error is set on eof */ + if (!ferror(f->f_fp) || feof(f->f_fp)) + break; +#else if (!ferror(f->f_fp)) break; +#endif PyErr_SetFromErrno(PyExc_IOError); clearerr(f->f_fp); error: