Compare sourcefile to hqx file (if it exists) before binhexing. This
should stop us from continually updating the .hqx files, at least for
resource files.
diff --git a/Mac/scripts/binhextree.py b/Mac/scripts/binhextree.py
index 85b8a6c..fa67b9c 100644
--- a/Mac/scripts/binhextree.py
+++ b/Mac/scripts/binhextree.py
@@ -32,13 +32,44 @@
 # Helper routines
 def binhexit(path, name):
 	dstfile = path + '.hqx'
-	if os.path.exists(dstfile) and \
-			os.stat(dstfile)[8] > os.stat(path)[8]:
-		print 'Skip', path,'- Up-to-date'
-		return
+	if os.path.exists(dstfile):
+		print 'Compare', path,'...',
+		if binhexcompare(path, dstfile):
+			print 'Identical, skipped.'
+			return
+		else:
+			print 'Not up-to-date.'
 	print 'Binhexing', path
 	binhex.binhex(path, dstfile)
 	
+def binhexcompare(source, hqxfile):
+	"""(source, hqxfile) - Check whether the two files match (forks only)"""
+	ifp = binhex.HexBin(hqxfile)
+
+	sfp = open(source, 'rb')
+	while 1:
+		d = ifp.read(128000)
+		d2 = sfp.read(128000)
+		if d <> d2:
+			return 0
+		if not d: break
+	sfp.close()
+	ifp.close_data()
+	
+	d = ifp.read_rsrc(128000)
+	if d:
+		sfp = binhex.openrsrc(source, 'rb')
+		d2 = sfp.read(128000)
+		if d <> d2:
+			return 0
+		while 1:
+			d = ifp.read_rsrc(128000)
+			d2 = sfp.read(128000)
+			if d <> d2:
+				return 0
+			if not d: break
+	return 1
+
 # Project files to handle
 project_files = {}