MW does not always set errno on failing fopen()
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index df27caf..d833527 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -32,6 +32,10 @@
 #ifdef THINK_C
 #define HAVE_FOPENRF
 #endif
+#ifdef __MWERKS__
+/* Mwerks fopen() doesn't always set errno */
+#define NO_FOPEN_ERRNO
+#endif
 
 #define BUF(v) GETSTRINGVALUE((stringobject *)v)
 
@@ -111,6 +115,13 @@
 		END_SAVE
 	}
 	if (f->f_fp == NULL) {
+#ifdef NO_FOPEN_ERRNO
+		if ( errno == 0 ) {
+			err_setstr(IOError, "Cannot open file");
+			DECREF(f);
+			return NULL;
+		}
+#endif
 		err_errno(IOError);
 		DECREF(f);
 		return NULL;