Subversion Repositories pub

Compare Revisions

Ignore whitespace Rev 587 → Rev 588

/relevation/branches/1.3/relevation.py
347,21 → 347,32
return zlib.decompress(cleardata_gz[:-padlen], 15, 2**15)
 
class DataReader(object):
def __init__(self, filename, data):
def __init__(self, filename):
self._impl = None
self._data = data
self._check_header(filename)
def _check_header(self, filename):
self._data = None
self._filename = filename
f = None
try:
if not os.access(filename, os.R_OK):
raise IOError('File \'%s\' not accessible' % filename)
f = open(filename, "rb")
# Encrypted data
self._data = f.read()
finally:
if f:
f.close()
self._check_header()
def _check_header(self):
header = self._data[0:12]
magic = header[0:4]
if magic != "rvl\x00":
raise IOError('File \'%s\' not in the correct format' % filename)
raise IOError('File \'%s\' not in the correct format' % self._filename)
data_version = header[4]
app_version = header[6:9]
if data_version == '\x01':
self._impl = DataReaderV1()
else:
raise IOError('File \'%s\' is in a newer, unsupported, data format' % filename)
raise IOError('File \'%s\' is in a newer, unsupported, data format' % self._filename)
def get_xml(self, password):
return self._impl.get_xml(self._data, password)
 
461,17 → 472,7
sys.exit(os.EX_USAGE)
# ---------- PASSWORDS FILE DECRYPTION AND DECOMPRESSION ---------- #
f = None
try:
if not os.access(datafile, os.R_OK):
raise IOError('File \'%s\' not accessible' % datafile)
f = open(datafile, "rb")
# Encrypted data
data = f.read()
finally:
if f:
f.close()
xmldata = DataReader(datafile, data).get_xml(password)
xmldata = DataReader(datafile).get_xml(password)
# ---------- QUERIES ---------- #
if dump_xml: