mirror of
https://github.com/python/cpython.git
synced 2025-09-03 15:31:08 +00:00
Patch 1267 by Christian Heimes.
Move the initialization of sys.std{in,out,err} and __builtin__.open to C code. This solves the problem that "python -S" wouldn't work.
This commit is contained in:
parent
75a902db78
commit
ce3a72aec6
11 changed files with 175 additions and 31 deletions
|
@ -91,6 +91,9 @@ static PyObject *extensions = NULL;
|
|||
/* This table is defined in config.c: */
|
||||
extern struct _inittab _PyImport_Inittab[];
|
||||
|
||||
/* Method from Parser/tokenizer.c */
|
||||
extern char * PyTokenizer_FindEncoding(FILE *fp);
|
||||
|
||||
struct _inittab *PyImport_Inittab = _PyImport_Inittab;
|
||||
|
||||
/* these tables define the module suffixes that Python recognizes */
|
||||
|
@ -2558,6 +2561,7 @@ call_find_module(char *name, PyObject *path)
|
|||
struct filedescr *fdp;
|
||||
char pathname[MAXPATHLEN+1];
|
||||
FILE *fp = NULL;
|
||||
char *encoding = NULL;
|
||||
|
||||
pathname[0] = '\0';
|
||||
if (path == Py_None)
|
||||
|
@ -2566,7 +2570,14 @@ call_find_module(char *name, PyObject *path)
|
|||
if (fdp == NULL)
|
||||
return NULL;
|
||||
if (fp != NULL) {
|
||||
fob = PyFile_FromFile(fp, pathname, fdp->mode, fclose);
|
||||
if (strchr(fdp->mode, 'b') == NULL) {
|
||||
/* Python text file, get encoding from tokenizer */
|
||||
encoding = PyTokenizer_FindEncoding(fp);
|
||||
encoding = (encoding != NULL) ? encoding :
|
||||
(char*)PyUnicode_GetDefaultEncoding();
|
||||
}
|
||||
fob = PyFile_FromFileEx(fp, pathname, fdp->mode, fclose, -1,
|
||||
(char*)encoding, NULL);
|
||||
if (fob == NULL) {
|
||||
fclose(fp);
|
||||
return NULL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue