docs: def frombinary(self, s):
          """Decode the binary string into an in memory list.
  
              S is a binary string."""
          entrylen = struct.calcsize(self.ENTRYSTRUCT)
          p = 0
          while p<len(s):
              (slen, dpos, dlen, ulen, flag, typcd) = struct.unpack(self.ENTRYSTRUCT,
                                                          s[p:p+entrylen])
              nmlen = slen - entrylen
              p = p + entrylen
              (nm,) = struct.unpack(`nmlen`+'s', s[p:p+nmlen])
              p = p + nmlen
              # version 4
              # self.data.append((dpos, dlen, ulen, flag, typcd, nm[:-1]))
              # version 5
              # nm may have up to 15 bytes of padding
              pos = nm.find('\0')
              if pos < 0:
                  self.data.append((dpos, dlen, ulen, flag, typcd, nm))
              else:
                  self.data.append((dpos, dlen, ulen, flag, typcd, nm[:pos]))