]> granicus.if.org Git - python/commitdiff
Fixed to work under MachoPython, doing the expected unpacking for applesingle files...
authorJack Jansen <jack.jansen@cwi.nl>
Sun, 13 Jan 2002 23:18:00 +0000 (23:18 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Sun, 13 Jan 2002 23:18:00 +0000 (23:18 +0000)
Mac/Lib/macresource.py

index 001e6cc7bb69f69121e5e262f88d9b45b094e880..1cd14332a8be6944ef8da6e932093d2471f2dc2a 100644 (file)
@@ -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