This commit is contained in:
Kovid Goyal 2012-04-22 22:53:27 +05:30
parent 81aef69b4e
commit 60fe8b69f6
2 changed files with 6 additions and 8 deletions

View File

@ -295,19 +295,17 @@ class MOBIHeader(object): # {{{
self.datp_record_count, = struct.unpack(b'>I', self.raw[124:128]) self.datp_record_count, = struct.unpack(b'>I', self.raw[124:128])
self.exth_flags, = struct.unpack(b'>I', self.raw[128:132]) self.exth_flags, = struct.unpack(b'>I', self.raw[128:132])
self.has_exth = bool(self.exth_flags & 0x40) self.has_exth = bool(self.exth_flags & 0x40)
self.has_drm_data = self.length >= 174 and len(self.raw) >= 180 self.has_drm_data = self.length >= 174 and len(self.raw) >= 184
if self.has_drm_data: if self.has_drm_data:
self.unknown3 = self.raw[132:164] self.unknown3 = self.raw[132:168]
self.drm_offset, = struct.unpack(b'>I', self.raw[164:168]) self.drm_offset, self.drm_count, self.drm_size, self.drm_flags = \
self.drm_count, = struct.unpack(b'>I', self.raw[168:172]) struct.unpack(b'>4I', self.raw[168:184])
self.drm_size, = struct.unpack(b'>I', self.raw[172:176])
self.drm_flags = bin(struct.unpack(b'>I', self.raw[176:180])[0])
self.has_extra_data_flags = self.length >= 232 and len(self.raw) >= 232+16 self.has_extra_data_flags = self.length >= 232 and len(self.raw) >= 232+16
self.has_fcis_flis = False self.has_fcis_flis = False
self.has_multibytes = self.has_indexing_bytes = self.has_uncrossable_breaks = False self.has_multibytes = self.has_indexing_bytes = self.has_uncrossable_breaks = False
self.extra_data_flags = 0 self.extra_data_flags = 0
if self.has_extra_data_flags: if self.has_extra_data_flags:
self.unknown4 = self.raw[180:192] self.unknown4 = self.raw[184:192]
self.fdst_idx, self.fdst_count = struct.unpack_from(b'>LL', self.fdst_idx, self.fdst_count = struct.unpack_from(b'>LL',
self.raw, 192) self.raw, 192)
if self.fdst_count <= 1: if self.fdst_count <= 1:

View File

@ -120,7 +120,7 @@ class MOBIHeader(Header): # {{{
unknown = zeroes(36) unknown = zeroes(36)
# 168: DRM # 168: DRM
drm_offset drm_offset = NULL
drm_count drm_count
drm_size drm_size
drm_flags drm_flags