Index: Lib/gzip.py =================================================================== --- Lib/gzip.py (revision 67926) +++ Lib/gzip.py (working copy) @@ -5,7 +5,7 @@ # based on Andrew Kuchling's minigzip.py distributed with the zlib module -import struct, sys, time +import os.path, struct, sys, time import zlib import __builtin__ @@ -84,19 +84,23 @@ if hasattr(fileobj, 'mode'): mode = fileobj.mode else: mode = 'rb' + # basename of the original filename for file header (RFC 1952) + self.name = os.path.basename(filename) + if self.name.endswith(".gz"): + self.name = self.name[:-3] + if mode[0:1] == 'r': self.mode = READ # Set flag indicating start of a new member self._new_member = True self.extrabuf = "" self.extrasize = 0 - self.name = filename # Starts small, scales exponentially self.min_readsize = 100 elif mode[0:1] == 'w' or mode[0:1] == 'a': self.mode = WRITE - self._init_write(filename) + self._init_write() self.compress = zlib.compressobj(compresslevel, zlib.DEFLATED, -zlib.MAX_WBITS, @@ -111,20 +115,11 @@ if self.mode == WRITE: self._write_gzip_header() - @property - def filename(self): - import warnings - warnings.warn("use the name attribute", DeprecationWarning) - if self.mode == WRITE and self.name[-3:] != ".gz": - return self.name + ".gz" - return self.name - def __repr__(self): s = repr(self.fileobj) return '' - def _init_write(self, filename): - self.name = filename + def _init_write(self): self.crc = zlib.crc32("") & 0xffffffffL self.size = 0 self.writebuf = [] @@ -133,18 +128,15 @@ def _write_gzip_header(self): self.fileobj.write('\037\213') # magic header self.fileobj.write('\010') # compression method - fname = self.name - if fname.endswith(".gz"): - fname = fname[:-3] flags = 0 - if fname: + if self.name: flags = FNAME self.fileobj.write(chr(flags)) write32u(self.fileobj, long(time.time())) self.fileobj.write('\002') self.fileobj.write('\377') - if fname: - self.fileobj.write(fname + '\000') + if self.name: + self.fileobj.write(self.name + '\000') def _init_read(self): self.crc = zlib.crc32("") & 0xffffffffL