diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-06-11 19:44:54 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-06-11 19:44:54 +0100 |
commit | 7fcf5e9d351868f0af460d6a2fe619ece5c3e5c8 (patch) | |
tree | 28f83350bae8a6475d813e2e7929a9326ac2e420 /summainlib.py | |
parent | 1ab89da3a33a218ee07743a2e3a996cf0b34e71f (diff) | |
download | summain-7fcf5e9d351868f0af460d6a2fe619ece5c3e5c8.tar.gz |
Implement MD5 header.
Diffstat (limited to 'summainlib.py')
-rw-r--r-- | summainlib.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/summainlib.py b/summainlib.py index 141eacc..347d525 100644 --- a/summainlib.py +++ b/summainlib.py @@ -207,7 +207,11 @@ class FilesystemObject(object): def _compute_group(self): return self.lookup_group(self._stat_result.st_gid) - def _compute_sha_1(self): + def _compute_md5(self): + if stat.S_ISREG(self._stat_result.st_mode): + return self.compute_md5(self._filename, self._md5) + + def _compute_sha1(self): if stat.S_ISREG(self._stat_result.st_mode): return self.compute_sha1(self._filename, self._sha1) @@ -228,6 +232,16 @@ class FilesystemObject(object): def lookup_group(self, gid): return grp.getgrgid(gid).gr_name + def compute_md5(self, filename, md5): + f = self.open_file(filename) + while True: + data = f.read(64*1024) # 64 KiB seems reasonable. + if not data: + break + md5.update(data) + f.close() + return md5.hexdigest() + def compute_sha1(self, filename, sha1): f = self.open_file(filename) while True: @@ -287,7 +301,7 @@ class FilesystemObject(object): name = self.relative_path(root) keys = ['Mtime', 'Mode', 'Ino', 'Dev', 'Nlink', 'Size', - 'Uid', 'Username', 'Gid', 'Group', 'Sha-1', 'Target'] + 'Uid', 'Username', 'Gid', 'Group', 'Sha1', 'Target'] values = [('Name', name)] values += [(k, self[k]) for k in keys if self[k] != ''] return ''.join('%s: %s\n' % (k, v) for k, v in values if v != '') |