summaryrefslogtreecommitdiffstats
path: root/Mac/Lib/macresource.py
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>2002-01-13 23:18:00 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>2002-01-13 23:18:00 (GMT)
commit32d1a3b1c9bbdff0e449ac6e47d289714e1a1292 (patch)
tree4349a215dd2883b381de46aca576d0ebc29527be /Mac/Lib/macresource.py
parentd48b10621e53c780be016c2d51fd2165d7c8f4a5 (diff)
downloadcpython-32d1a3b1c9bbdff0e449ac6e47d289714e1a1292.zip
cpython-32d1a3b1c9bbdff0e449ac6e47d289714e1a1292.tar.gz
cpython-32d1a3b1c9bbdff0e449ac6e47d289714e1a1292.tar.bz2
Fixed to work under MachoPython, doing the expected unpacking for applesingle files. The IDE still doesn't work, though, because it uses :-style pathnames.
Diffstat (limited to 'Mac/Lib/macresource.py')
-rw-r--r--Mac/Lib/macresource.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/Mac/Lib/macresource.py b/Mac/Lib/macresource.py
index 001e6cc..1cd1433 100644
--- a/Mac/Lib/macresource.py
+++ b/Mac/Lib/macresource.py
@@ -61,11 +61,33 @@ def need(restype, resid, filename=None, modname=None):
else:
raise ResourceFileNotFoundError, filename
- refno = Res.FSpOpenResFile(pathname, 1)
+ try:
+ refno = Res.FSpOpenResFile(pathname, 1)
+ except Res.Error, arg:
+ if arg[0] in (-37, -39):
+ # No resource fork. We may be on OSX, try to decode
+ # the applesingle file.
+ pathname = _decode(pathname)
+ if pathname:
+ refno = Res.FSOpenResourceFile(pathname, u'', 1)
+ else:
+ raise
+
# And check that the resource exists now
if type(resid) is type(1):
h = Res.GetResource(restype, resid)
else:
h = Res.GetNamedResource(restype, resid)
- return refno \ No newline at end of file
+ return refno
+
+def _decode(pathname):
+ # Decode an AppleSingle resource file, return the new pathname.
+ newpathname = pathname + '.df.rsrc'
+ if os.path.exists(newpathname):
+ return newpathname
+ import applesingle
+ applesingle.decode(pathname, newpathname, resonly=1)
+ return newpathname
+
+ \ No newline at end of file