]> granicus.if.org Git - python/commitdiff
Compare sourcefile to hqx file (if it exists) before binhexing. This
authorJack Jansen <jack.jansen@cwi.nl>
Mon, 25 Mar 1996 15:38:36 +0000 (15:38 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Mon, 25 Mar 1996 15:38:36 +0000 (15:38 +0000)
should stop us from continually updating the .hqx files, at least for
resource files.

Mac/scripts/binhextree.py

index 85b8a6c828e3024bc437e1bda0b31dec9eaef248..fa67b9c71f27a612e105822a862be52c69435723 100644 (file)
@@ -32,13 +32,44 @@ CWDIR=':Mac:mwerks:projects'
 # 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 = {}