diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 1996-03-25 15:38:36 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 1996-03-25 15:38:36 (GMT) |
commit | 5196d00cc693070da9ff8eed406921347033a1ed (patch) | |
tree | bfd7e08d79b0d0d68a76687fafa2b5e29fdfa3ef /Mac/scripts/binhextree.py | |
parent | a220e67a9ed94d66b81e393a3bb9e6acd10068c1 (diff) | |
download | cpython-5196d00cc693070da9ff8eed406921347033a1ed.zip cpython-5196d00cc693070da9ff8eed406921347033a1ed.tar.gz cpython-5196d00cc693070da9ff8eed406921347033a1ed.tar.bz2 |
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.
Diffstat (limited to 'Mac/scripts/binhextree.py')
-rw-r--r-- | Mac/scripts/binhextree.py | 39 |
1 files changed, 35 insertions, 4 deletions
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 @@ 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 = {} |