437 # mapping to read/write various marker formats |
437 # mapping to read/write various marker formats |
438 # <version> -> (decoder, encoder) |
438 # <version> -> (decoder, encoder) |
439 formats = {_fm0version: (_fm0readmarkers, _fm0encodeonemarker), |
439 formats = {_fm0version: (_fm0readmarkers, _fm0encodeonemarker), |
440 _fm1version: (_fm1readmarkers, _fm1encodeonemarker)} |
440 _fm1version: (_fm1readmarkers, _fm1encodeonemarker)} |
441 |
441 |
|
442 def _readmarkerversion(data): |
|
443 return _unpack('>B', data[0:1])[0] |
|
444 |
442 @util.nogc |
445 @util.nogc |
443 def _readmarkers(data): |
446 def _readmarkers(data): |
444 """Read and enumerate markers from raw data""" |
447 """Read and enumerate markers from raw data""" |
445 off = 0 |
448 diskversion = _readmarkerversion(data) |
446 diskversion = _unpack('>B', data[off:off + 1])[0] |
449 off = 1 |
447 off += 1 |
|
448 if diskversion not in formats: |
450 if diskversion not in formats: |
449 msg = _('parsing obsolete marker: unknown version %r') % diskversion |
451 msg = _('parsing obsolete marker: unknown version %r') % diskversion |
450 raise error.UnknownVersion(msg, version=diskversion) |
452 raise error.UnknownVersion(msg, version=diskversion) |
451 return diskversion, formats[diskversion][0](data, off) |
453 return diskversion, formats[diskversion][0](data, off) |
452 |
454 |