"Barak, Ron" <ron.ba...@lsi.com> wrote in message news:7f0503cd69378f49be0dc30661c6ccf602494...@enbmail01.lsi.com...
The source of gzip.py on my system seems to suggest that negative seeks are supported:

    def seek(self, offset):
        if self.mode == WRITE:
            if offset < self.offset:
                raise IOError('Negative seek in write mode')
            count = offset - self.offset
            for i in range(count // 1024):
                self.write(1024 * '\0')
            self.write((count % 1024) * '\0')
        elif self.mode == READ:
            if offset < self.offset:
                # for negative seek, rewind and do positive seek
                self.rewind()
            count = offset - self.offset
            for i in range(count // 1024):
                self.read(1024)
            self.read(count % 1024)

Could any who're familiar with the inner working of gzip settle this issue ?
Is seek from EOF supported for gzip files ?

Source from 2.6.1.  Seek from EOF not supported:

   def seek(self, offset, whence=0):
       if whence:
           if whence == 1:
               offset = self.offset + offset
           else:
               raise ValueError('Seek from end not supported')
       if self.mode == WRITE:
           if offset < self.offset:
               raise IOError('Negative seek in write mode')
           count = offset - self.offset
           for i in range(count // 1024):
               self.write(1024 * '\0')
           self.write((count % 1024) * '\0')
       elif self.mode == READ:
           if offset < self.offset:
               # for negative seek, rewind and do positive seek
               self.rewind()
           count = offset - self.offset
           for i in range(count // 1024):
               self.read(1024)
           self.read(count % 1024)

-Mark


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to