PyFile_FromString(): If an exception occurs, pass in the filename that
was used so it's reflected in the IOError.  Call
PyErr_SetFromErrnoWithFilename().
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index d43f113..d3b9894 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -137,13 +137,14 @@
 	}
 	if (f->f_fp == NULL) {
 #ifdef NO_FOPEN_ERRNO
+		/* Metroworks only, not testable, so unchanged */
 		if ( errno == 0 ) {
 			PyErr_SetString(PyExc_IOError, "Cannot open file");
 			Py_DECREF(f);
 			return NULL;
 		}
 #endif
-		PyErr_SetFromErrno(PyExc_IOError);
+		PyErr_SetFromErrnoWithFilename(PyExc_IOError, name);
 		Py_DECREF(f);
 		return NULL;
 	}