Mercurial > public > mercurial-scm > hg-stable
diff mercurial/archival.py @ 12319:381f131220ad stable
archive: set date to 1980 for very old zip files
The zip file format stores the date using "MS-DOS format" which
apparently means that they use 1980 as their epoch. Python's zipfile
module emits deprecation warnings of this form
/usr/lib/python2.6/zipfile.py:1108: DeprecationWarning: struct
integer overflow masking is deprecated
self.fp.write(zinfo.FileHeader())
/usr/lib/python2.6/zipfile.py:1108: DeprecationWarning: 'H' format
requires 0 <= number <= 65535
self.fp.write(zinfo.FileHeader())
/home/mg/src/mercurial-crew/mercurial/archival.py:169:
DeprecationWarning: struct integer overflow masking is deprecated
self.z.close()
/home/mg/src/mercurial-crew/mercurial/archival.py:169:
DeprecationWarning: 'H' format requires 0 <= number <= 65535
self.z.close()
when it is given such old timestamps. This fixes this by silently
clamping the date to 1980.
author | Martin Geisler <mg@aragost.com> |
---|---|
date | Mon, 20 Sep 2010 15:33:39 +0200 |
parents | 08a0f04b56bd |
children | 11db6fa2961e |
line wrap: on
line diff
--- a/mercurial/archival.py Fri Sep 17 12:44:35 2010 -0500 +++ b/mercurial/archival.py Mon Sep 20 15:33:39 2010 +0200 @@ -139,6 +139,13 @@ self.z = zipfile.ZipFile(dest, 'w', compress and zipfile.ZIP_DEFLATED or zipfile.ZIP_STORED) + + # Python's zipfile module emits deprecation warnings if we try + # to store files with a date before 1980. + epoch = 315532800 # calendar.timegm((1980, 1, 1, 0, 0, 0, 1, 1, 0)) + if mtime < epoch: + mtime = epoch + self.date_time = time.gmtime(mtime)[:6] def addfile(self, name, mode, islink, data):