[Python-3000-checkins] r55547 - in python/branches/py3k-struni: Lib/site.py Objects/fileobject.c Python/bltinmodule.c Python/sysmodule.c

guido.van.rossum python-3000-checkins at python.org
Thu May 24 16:31:40 CEST 2007


Author: guido.van.rossum
Date: Thu May 24 16:31:33 2007
New Revision: 55547

Modified:
   python/branches/py3k-struni/Lib/site.py
   python/branches/py3k-struni/Objects/fileobject.c
   python/branches/py3k-struni/Python/bltinmodule.c
   python/branches/py3k-struni/Python/sysmodule.c
Log:
Enable new I/O.  Disable creation of old files.
Lots of stuff fails now, including -S and -m command line flags.


Modified: python/branches/py3k-struni/Lib/site.py
==============================================================================
--- python/branches/py3k-struni/Lib/site.py	(original)
+++ python/branches/py3k-struni/Lib/site.py	Thu May 24 16:31:33 2007
@@ -403,19 +403,13 @@
 
 
 def installnewio():
-    """Install new I/O library as default.
-
-    This is only done if $PYTHONNEWIO is set and non-empty.
-    """
-    if not os.getenv("PYTHONNEWIO"):
-        return
+    """Install new I/O library as default."""
     import io
     # Trick so that open won't become a bound method when stored
     # as a class variable (as dumbdbm does)
     class open:
         def __new__(cls, *args, **kwds):
             return io.open(*args, **kwds)
-    __builtin__.classic_open = __builtin__.open
     __builtin__.open = open
     sys.stdin = io.open(0, "r")
     sys.stdout = io.open(1, "w")

Modified: python/branches/py3k-struni/Objects/fileobject.c
==============================================================================
--- python/branches/py3k-struni/Objects/fileobject.c	(original)
+++ python/branches/py3k-struni/Objects/fileobject.c	Thu May 24 16:31:33 2007
@@ -265,6 +265,10 @@
 PyObject *
 PyFile_FromFile(FILE *fp, char *name, char *mode, int (*close)(FILE *))
 {
+	PyErr_SetString(PyExc_SystemError,
+			"attempt to create old file from FILE *");
+	return NULL;
+#if 0
 	PyFileObject *f = (PyFileObject *)PyFile_Type.tp_new(&PyFile_Type,
 							     NULL, NULL);
 	if (f != NULL) {
@@ -278,6 +282,7 @@
                 Py_DECREF(o_name);
 	}
 	return (PyObject *) f;
+#endif
 }
 
 PyObject *
@@ -1941,6 +1946,9 @@
 	PyObject *self;
 	static PyObject *not_yet_string;
 
+        PyErr_SetString(PyExc_SystemError, "attempt to create old file");
+        return NULL;
+
 	assert(type != NULL && type->tp_alloc != NULL);
 
 	if (not_yet_string == NULL) {

Modified: python/branches/py3k-struni/Python/bltinmodule.c
==============================================================================
--- python/branches/py3k-struni/Python/bltinmodule.c	(original)
+++ python/branches/py3k-struni/Python/bltinmodule.c	Thu May 24 16:31:33 2007
@@ -1434,18 +1434,6 @@
 
 
 static PyObject *
-builtin_open(PyObject *self, PyObject *args, PyObject *kwds)
-{
-	return PyObject_Call((PyObject*)&PyFile_Type, args, kwds);
-}
-
-PyDoc_STRVAR(open_doc,
-"open(name[, mode[, buffering]]) -> file object\n\
-\n\
-Open a file using the file() type, returns a file object.");
-
-
-static PyObject *
 builtin_ord(PyObject *self, PyObject* obj)
 {
 	long ord;
@@ -1464,7 +1452,7 @@
 			ord = (long)*PyUnicode_AS_UNICODE(obj);
 			return PyInt_FromLong(ord);
 		}
-	} 
+	}
 	else if (PyBytes_Check(obj)) {
 		/* XXX Hopefully this is temporary */
 		size = PyBytes_GET_SIZE(obj);
@@ -1963,7 +1951,6 @@
  	{"min",		(PyCFunction)builtin_min,        METH_VARARGS | METH_KEYWORDS, min_doc},
 	{"next",	(PyCFunction)builtin_next,       METH_VARARGS, next_doc},
  	{"oct",		builtin_oct,        METH_O, oct_doc},
- 	{"open",	(PyCFunction)builtin_open,       METH_VARARGS | METH_KEYWORDS, open_doc},
  	{"ord",		builtin_ord,        METH_O, ord_doc},
  	{"pow",		builtin_pow,        METH_VARARGS, pow_doc},
  	{"print",	(PyCFunction)builtin_print,      METH_VARARGS | METH_KEYWORDS, print_doc},

Modified: python/branches/py3k-struni/Python/sysmodule.c
==============================================================================
--- python/branches/py3k-struni/Python/sysmodule.c	(original)
+++ python/branches/py3k-struni/Python/sysmodule.c	Thu May 24 16:31:33 2007
@@ -960,13 +960,6 @@
 )
 /* end of sys_doc */ ;
 
-static int
-_check_and_flush (FILE *stream)
-{
-  int prev_fail = ferror (stream);
-  return fflush (stream) || prev_fail ? EOF : 0;
-}
-
 /* Subversion branch and revision management */
 static const char _patchlevel_revision[] = PY_PATCHLEVEL_REVISION;
 static const char headurl[] = "$HeadURL$";
@@ -1058,11 +1051,7 @@
 _PySys_Init(void)
 {
 	PyObject *m, *v, *sysdict;
-	PyObject *sysin, *sysout, *syserr;
 	char *s;
-#ifdef MS_WINDOWS
-	char buf[128];
-#endif
 
 	m = Py_InitModule3("sys", sys_methods, sys_doc);
 	if (m == NULL)
@@ -1081,52 +1070,12 @@
 		}
 	}
 
-	/* Closing the standard FILE* if sys.std* goes aways causes problems
-	 * for embedded Python usages. Closing them when somebody explicitly
-	 * invokes .close() might be possible, but the FAQ promises they get
-	 * never closed. However, we still need to get write errors when
-	 * writing fails (e.g. because stdout is redirected), so we flush the
-	 * streams and check for errors before the file objects are deleted.
-	 * On OS X, fflush()ing stdin causes an error, so we exempt stdin
-	 * from that procedure.
-	 */
-	sysin = PyFile_FromFile(stdin, "<stdin>", "r", NULL);
-	sysout = PyFile_FromFile(stdout, "<stdout>", "w", _check_and_flush);
-	syserr = PyFile_FromFile(stderr, "<stderr>", "w", _check_and_flush);
-	if (PyErr_Occurred())
-		return NULL;
-#ifdef MS_WINDOWS
-	if(isatty(_fileno(stdin)) && PyFile_Check(sysin)) {
-		sprintf(buf, "cp%d", GetConsoleCP());
-		if (!PyFile_SetEncoding(sysin, buf))
-			return NULL;
-	}
-	if(isatty(_fileno(stdout)) && PyFile_Check(sysout)) {
-		sprintf(buf, "cp%d", GetConsoleOutputCP());
-		if (!PyFile_SetEncoding(sysout, buf))
-			return NULL;
-	}
-	if(isatty(_fileno(stderr)) && PyFile_Check(syserr)) {
-		sprintf(buf, "cp%d", GetConsoleOutputCP());
-		if (!PyFile_SetEncoding(syserr, buf))
-			return NULL;
-	}
-#endif
+        /* stdin/stdout/stderr are now set by site.py. */
 
-	PyDict_SetItemString(sysdict, "stdin", sysin);
-	PyDict_SetItemString(sysdict, "stdout", sysout);
-	PyDict_SetItemString(sysdict, "stderr", syserr);
-	/* Make backup copies for cleanup */
-	PyDict_SetItemString(sysdict, "__stdin__", sysin);
-	PyDict_SetItemString(sysdict, "__stdout__", sysout);
-	PyDict_SetItemString(sysdict, "__stderr__", syserr);
 	PyDict_SetItemString(sysdict, "__displayhook__",
                              PyDict_GetItemString(sysdict, "displayhook"));
 	PyDict_SetItemString(sysdict, "__excepthook__",
                              PyDict_GetItemString(sysdict, "excepthook"));
-	Py_XDECREF(sysin);
-	Py_XDECREF(sysout);
-	Py_XDECREF(syserr);
 	PyDict_SetItemString(sysdict, "version",
 			     v = PyString_FromString(Py_GetVersion()));
 	Py_XDECREF(v);


More information about the Python-3000-checkins mailing list