archival: don't set gzip filename header when there's no filename stable
authorBrodie Rao <brodie@bitheap.org>
Tue, 07 Dec 2010 19:47:53 +1100
branchstable
changeset 13102 2956945c3bee
parent 13100 66d7a1250c9b
child 13103 6e79a3bb8c79
archival: don't set gzip filename header when there's no filename This mainly affects hgweb, which can generate tar.gz archives without filenames. Without this change, the header would be set to ".gz", which can confuse Safari into extracting the file and renaming it to "gz" when "Open 'safe' files after downloading" is enabled. file(1) before: hg-crew-5e51254ad4d4.tar.gz: gzip compressed data, was ".gz", last modified: Thu Dec 2 11:46:20 2010, max compression after: hg-crew-5e51254ad4d4.tar.gz: gzip compressed data, last modified: Thu Dec 2 11:46:20 2010, max compression
mercurial/archival.py
--- a/mercurial/archival.py	Fri Dec 03 11:40:30 2010 +0900
+++ b/mercurial/archival.py	Tue Dec 07 19:47:53 2010 +1100
@@ -70,6 +70,8 @@
             self.fileobj.write('\010')                 # compression method
             # Python 2.6 deprecates self.filename
             fname = getattr(self, 'name', None) or self.filename
+            if fname and fname.endswith('.gz'):
+                fname = fname[:-3]
             flags = 0
             if fname:
                 flags = gzip.FNAME