[Bug 6413] Fix importing ProGen files
This isn't a perfect fix because it requires that the ProGen file is encoded with CP437, which is guaranteed only in Version 3.21 and later. svn: r21355
This commit is contained in:
parent
8abf7677d6
commit
5d6e2c991a
@ -116,8 +116,8 @@ def _read_mem(bname):
|
|||||||
fname = bname + '.mem'
|
fname = bname + '.mem'
|
||||||
f = open(fname, "rb")
|
f = open(fname, "rb")
|
||||||
recfmt = "i28s"
|
recfmt = "i28s"
|
||||||
reclen = struct.calcsize( recfmt )
|
reclen = struct.calcsize( str(recfmt) )
|
||||||
#print "# reclen = %d" % reclen
|
print "# reclen = %d" % reclen
|
||||||
|
|
||||||
mems = []
|
mems = []
|
||||||
while 1:
|
while 1:
|
||||||
@ -138,7 +138,7 @@ def _read_recs(table, bname):
|
|||||||
f = open(fname, "rb")
|
f = open(fname, "rb")
|
||||||
recfmt = table.recfmt
|
recfmt = table.recfmt
|
||||||
log.info("# %s - recfmt = %s" % (table['name1'], recfmt))
|
log.info("# %s - recfmt = %s" % (table['name1'], recfmt))
|
||||||
reclen = struct.calcsize( recfmt )
|
reclen = struct.calcsize(str(recfmt))
|
||||||
log.info("# %s - reclen = %d" % (table['name1'], reclen))
|
log.info("# %s - reclen = %d" % (table['name1'], reclen))
|
||||||
|
|
||||||
recs = []
|
recs = []
|
||||||
@ -436,7 +436,8 @@ class PG30_Def_Table:
|
|||||||
# Just grab a field
|
# Just grab a field
|
||||||
f = self.flds[1]
|
f = self.flds[1]
|
||||||
txt += '"%s"\n' % f
|
txt += '"%s"\n' % f
|
||||||
txt += 'recfmt = %s (length=%d)' % (self.recfmt, struct.calcsize(self.recfmt))
|
txt += 'recfmt = %s (length=%d)' % (self.recfmt,
|
||||||
|
struct.calcsize(str(self.recfmt)))
|
||||||
return txt
|
return txt
|
||||||
|
|
||||||
|
|
||||||
@ -460,9 +461,10 @@ class PG30_Def:
|
|||||||
raise ProgenError(_("Cannot find DEF file: %(deffname)s") % locals())
|
raise ProgenError(_("Cannot find DEF file: %(deffname)s") % locals())
|
||||||
|
|
||||||
# This can throw a IOError
|
# This can throw a IOError
|
||||||
lines = open(fname).readlines()
|
import io
|
||||||
|
lines = io.open(fname, buffering=1, encoding='cp437', errors='strict').readlines()
|
||||||
lines = [l.strip() for l in lines]
|
lines = [l.strip() for l in lines]
|
||||||
content = '\n'.join(lines)
|
content = '\n'.join(lines).encode('utf-8')
|
||||||
parts = re.split(r'\n(?=\[)', content)
|
parts = re.split(r'\n(?=\[)', content)
|
||||||
self.parts = {}
|
self.parts = {}
|
||||||
self.tables = {}
|
self.tables = {}
|
||||||
|
Loading…
Reference in New Issue
Block a user