--- Lib\gzip_old.py Thu Aug 03 09:27:30 2006 +++ Lib\gzip.py Mon Dec 29 23:44:54 2008 @@ -5,7 +5,7 @@ but random access is not allowed.""" # 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__ @@ -100,19 +100,23 @@ class GzipFile: 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.filename = 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, @@ -131,10 +135,7 @@ class GzipFile: s = repr(self.fileobj) return '' - def _init_write(self, filename): - if filename[-3:] != '.gz': - filename = filename + '.gz' - self.filename = filename + def _init_write(self): self.crc = zlib.crc32("") self.size = 0 self.writebuf = [] @@ -143,16 +144,15 @@ class GzipFile: def _write_gzip_header(self): self.fileobj.write('\037\213') # magic header self.fileobj.write('\010') # compression method - fname = self.filename[:-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("")