]> granicus.if.org Git - python/commitdiff
File modes in filedescr entries are also passed to Python, so we now put "U"
authorJack Jansen <jack.jansen@cwi.nl>
Tue, 28 May 2002 10:58:19 +0000 (10:58 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Tue, 28 May 2002 10:58:19 +0000 (10:58 +0000)
in there, and convert it to "rb" (or "r" for non-universal-newline builds)
before passing it to fopen().

Fixes #561326.

Python/import.c

index 3775f886e3144fc331f99b0194342bd6ee86efba..5c53813462dbb470d78a58f91e1a3b35f98760c8 100644 (file)
@@ -81,15 +81,15 @@ struct filedescr * _PyImport_Filetab = NULL;
 
 #ifdef RISCOS
 static const struct filedescr _PyImport_StandardFiletab[] = {
-       {"/py", "r" PY_STDIOTEXTMODE, PY_SOURCE},
+       {"/py", "U", PY_SOURCE},
        {"/pyc", "rb", PY_COMPILED},
        {0, 0}
 };
 #else
 static const struct filedescr _PyImport_StandardFiletab[] = {
-       {".py", "r" PY_STDIOTEXTMODE, PY_SOURCE},
+       {".py", "U", PY_SOURCE},
 #ifdef MS_WIN32
-       {".pyw", "r" PY_STDIOTEXTMODE, PY_SOURCE},
+       {".pyw", "U", PY_SOURCE},
 #endif
        {".pyc", "rb", PY_COMPILED},
        {0, 0}
@@ -892,6 +892,7 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen,
        int i, npath;
        size_t len, namelen;
        struct filedescr *fdp = NULL;
+       char *filemode;
        FILE *fp = NULL;
 #ifndef RISCOS
        struct stat statbuf;
@@ -1065,7 +1066,9 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen,
                        if (Py_VerboseFlag > 1)
                                PySys_WriteStderr("# trying %s\n", buf);
 #endif /* !macintosh */
-                       fp = fopen(buf, fdp->mode);
+                       filemode = fdp->mode;
+                       if (filemode[0] == 'U') filemode = "r" PY_STDIOTEXTMODE;
+                       fp = fopen(buf, filemode);
                        if (fp != NULL) {
                                if (case_ok(buf, len, namelen, name))
                                        break;