From 32d1a3b1c9bbdff0e449ac6e47d289714e1a1292 Mon Sep 17 00:00:00 2001
From: Jack Jansen <jack.jansen@cwi.nl>
Date: Sun, 13 Jan 2002 23:18:00 +0000
Subject: Fixed to work under MachoPython, doing the expected unpacking for
 applesingle files. The IDE still doesn't work, though, because it uses
 :-style pathnames.

---
 Mac/Lib/macresource.py | 26 ++++++++++++++++++++++++--
 1 file 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
-- 
cgit v0.12

