code: def files(self):
          
          # try new file header format first, then fallback on old
          for header in (r"(.*)\t\[\[\[1\n", r"^(\d+)\n$"):
              header = re.compile(header)
              filename = None
              self.fd.seek(0)
              line = self.readline()
              while line:
                  m = header.match(line)
                  if m is not None:
                      filename = m.group(1)
                      try:
                          filelines = int(self.readline().rstrip())
                      except ValueError:
                          raise ArchiveError('invalid archive format')
                      filestart = self.fd.tell()
                      yield (filename, filelines, filestart)
                  line = self.readline()
              if filename is not None:
                  break
docs: Yields archive file information.