1.1 --- a/iixr/files.py Mon Feb 07 02:05:38 2011 +0100
1.2 +++ b/iixr/files.py Tue Feb 08 00:08:27 2011 +0100
1.3 @@ -58,15 +58,17 @@
1.4 "Writing basic data types to files."
1.5
1.6 def tell(self):
1.7 + # NOTE: Will not be accurate within the current record.
1.8 return self.f.tell() + len(self.data)
1.9
1.10 def begin_record(self):
1.11 pass
1.12
1.13 def end_record(self):
1.14 - vint_to_array(len(self.record), self.data)
1.15 - self.data += self.record
1.16 - self.record = array('B')
1.17 + if self.record:
1.18 + vint_to_array(len(self.record), self.data)
1.19 + self.data += self.record
1.20 + self.record = array('B')
1.21
1.22 def write_number(self, number):
1.23
1.24 @@ -132,6 +134,7 @@
1.25
1.26 def flush(self):
1.27 if self.f is not None:
1.28 + self.end_record()
1.29 self.data.tofile(self.f)
1.30 self.data = array('B')
1.31
1.32 @@ -144,12 +147,16 @@
1.33 "Reading basic data types from files."
1.34
1.35 def begin_record(self):
1.36 - size = self.read_number_from_file()
1.37 - self.record.fromfile(self.f, size)
1.38 + self.record = array('B')
1.39 self.start = 0
1.40 + try:
1.41 + size = self.read_number_from_file()
1.42 + self.record.fromfile(self.f, size)
1.43 + except EOFError:
1.44 + pass
1.45
1.46 def end_record(self):
1.47 - self.record = array('B')
1.48 + pass
1.49
1.50 def read_number_from_file(self):
1.51