diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2002-11-07 23:07:05 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2002-11-07 23:07:05 (GMT) |
commit | dde800ec4ee704d0c4d6d0b60d74e72e0ea834d8 (patch) | |
tree | 329e6e0e43d662232eb8e3ccc1b5dc22f719bdb3 /Python/mactoolboxglue.c | |
parent | 430b1563dde73ae1dc8f2379bdd29a0b0e5c82eb (diff) | |
download | cpython-dde800ec4ee704d0c4d6d0b60d74e72e0ea834d8.zip cpython-dde800ec4ee704d0c4d6d0b60d74e72e0ea834d8.tar.gz cpython-dde800ec4ee704d0c4d6d0b60d74e72e0ea834d8.tar.bz2 |
Got rid of the python.rsrc resource file. The error message strings and
dialogs are now stored in Mac/Lib, and loaded on demand through macresource.
Not only does this simplify a MacPython based on Apple's Python, but
it also makes Mac error codes come out symbolically when running command
line python (if you have Mac/Lib in your path).
The resource files are copied from Mac/Resources. The old ones will disappear
after the OS9 build procedure has been adjusted.
Diffstat (limited to 'Python/mactoolboxglue.c')
-rw-r--r-- | Python/mactoolboxglue.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Python/mactoolboxglue.c b/Python/mactoolboxglue.c index 13e7afa..dd42f07 100644 --- a/Python/mactoolboxglue.c +++ b/Python/mactoolboxglue.c @@ -81,8 +81,42 @@ char *PyMac_StrError(int err) static char buf[256]; Handle h; char *str; + static int errors_loaded; h = GetResource('Estr', err); + if (!h && !errors_loaded) { + /* + ** Attempt to open the resource file containing the + ** Estr resources. We ignore all errors. We also try + ** this only once. + */ + errors_loaded = 1; + PyObject *m, *rv; + + m = PyImport_ImportModule("macresource"); + if (!m) { + if (Py_VerboseFlag) + PyErr_Print(); + PyErr_Clear(); + } else { + rv = PyObject_CallMethod(m, "open_error_resource", ""); + if (!rv) { + if (Py_VerboseFlag) + PyErr_Print(); + PyErr_Clear(); + } else { + Py_DECREF(rv); + /* And try again... */ + h = GetResource('Estr', err); + } + } + } + /* + ** Whether the code above succeeded or not, we won't try + ** again. + */ + errors_loaded = 1; + if ( h ) { HLock(h); str = (char *)*h; |