Fixed hexbin handling

This commit is contained in:
Jack Jansen 1995-10-03 14:41:15 +00:00
parent 8150760e6e
commit 685e16d7d6
1 changed files with 7 additions and 4 deletions

View File

@ -198,6 +198,7 @@ class BinHex:
self.ofp.write(data) self.ofp.write(data)
def _writecrc(self): def _writecrc(self):
## self.crc = binascii.crc_hqx('\0\0', self.crc) # XXXX Should this be here??
self.ofp.write(struct.pack('h', self.crc)) self.ofp.write(struct.pack('h', self.crc))
self.crc = 0 self.crc = 0
@ -257,9 +258,10 @@ class _Hqxdecoderengine:
self.ifp = ifp self.ifp = ifp
self.eof = 0 self.eof = 0
def read(self, wtd): def read(self, totalwtd):
"""Read at least wtd bytes (or until EOF)""" """Read at least wtd bytes (or until EOF)"""
decdata = '' decdata = ''
wtd = totalwtd
# #
# The loop here is convoluted, since we don't really now how much # The loop here is convoluted, since we don't really now how much
# to decode: there may be newlines in the incoming data. # to decode: there may be newlines in the incoming data.
@ -283,7 +285,7 @@ class _Hqxdecoderengine:
raise Error, 'Premature EOF on binhex file' raise Error, 'Premature EOF on binhex file'
data = data + newdata data = data + newdata
decdata = decdata + decdatacur decdata = decdata + decdatacur
wtd = wtd - len(decdata) wtd = totalwtd - len(decdata)
if not decdata and not self.eof: if not decdata and not self.eof:
raise Error, 'Premature EOF on binhex file' raise Error, 'Premature EOF on binhex file'
return decdata return decdata
@ -367,11 +369,12 @@ class HexBin:
def _checkcrc(self): def _checkcrc(self):
filecrc = struct.unpack('h', self.ifp.read(2))[0] & 0xffff filecrc = struct.unpack('h', self.ifp.read(2))[0] & 0xffff
## self.crc = binascii.crc_hqx('\0\0', self.crc) # XXXX Is this needed??
self.crc = self.crc & 0xffff self.crc = self.crc & 0xffff
if DEBUG: if DEBUG:
print 'DBG CRC %x %x'%(self.crc, filecrc) print 'DBG CRC %x %x'%(self.crc, filecrc)
#if filecrc != self.crc: if filecrc != self.crc:
# raise Error, 'CRC error, computed %x, read %x'%(self.crc, filecrc) raise Error, 'CRC error, computed %x, read %x'%(self.crc, filecrc)
self.crc = 0 self.crc = 0
def _readheader(self): def _readheader(self):