mirror of
https://mojerepo.cf/NeoBoot/NeoBoot-9.git
synced 2025-11-02 00:55:47 +01:00
Delete __init__.py
This commit is contained in:
@@ -1,139 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
import re
|
|
||||||
from ubi.volume import get_volumes
|
|
||||||
from ubi.block import sort, get_blocks_in_list, extract_blocks
|
|
||||||
from ubi.defines import *
|
|
||||||
from ubi import display
|
|
||||||
from ubi.image import description as image
|
|
||||||
from ubi.block import layout
|
|
||||||
|
|
||||||
class ubi:
|
|
||||||
|
|
||||||
def __init__(self, ubi_file):
|
|
||||||
self._file = ubi_file
|
|
||||||
self._first_peb_num = 0
|
|
||||||
self._blocks = extract_blocks(self)
|
|
||||||
self._block_count = len(self.blocks)
|
|
||||||
if self._block_count <= 0:
|
|
||||||
raise Exception('No blocks found.')
|
|
||||||
layout_list, data_list, int_vol_list, unknown_list = sort.by_type(self.blocks)
|
|
||||||
self._layout_blocks_list = layout_list
|
|
||||||
self._data_blocks_list = data_list
|
|
||||||
self._int_vol_blocks_list = int_vol_list
|
|
||||||
self._unknown_blocks_list = unknown_list
|
|
||||||
arbitrary_block = self.blocks.itervalues().next()
|
|
||||||
self._min_io_size = arbitrary_block.ec_hdr.vid_hdr_offset
|
|
||||||
self._leb_size = self.file.block_size - arbitrary_block.ec_hdr.data_offset
|
|
||||||
layout_pairs = layout.group_pairs(self.blocks, self.layout_blocks_list)
|
|
||||||
layout_infos = layout.associate_blocks(self.blocks, layout_pairs, self.first_peb_num)
|
|
||||||
self._images = []
|
|
||||||
for i in range(0, len(layout_infos)):
|
|
||||||
self._images.append(image(self.blocks, layout_infos[i]))
|
|
||||||
|
|
||||||
def _get_file(self):
|
|
||||||
return self._file
|
|
||||||
|
|
||||||
file = property(_get_file)
|
|
||||||
|
|
||||||
def _get_images(self):
|
|
||||||
return self._images
|
|
||||||
|
|
||||||
images = property(_get_images)
|
|
||||||
|
|
||||||
def _get_data_blocks_list(self):
|
|
||||||
return self._data_blocks_list
|
|
||||||
|
|
||||||
data_blocks_list = property(_get_data_blocks_list)
|
|
||||||
|
|
||||||
def _get_layout_blocks_list(self):
|
|
||||||
return self._layout_blocks_list
|
|
||||||
|
|
||||||
layout_blocks_list = property(_get_layout_blocks_list)
|
|
||||||
|
|
||||||
def _get_int_vol_blocks_list(self):
|
|
||||||
return self._int_vol_blocks_list
|
|
||||||
|
|
||||||
int_vol_blocks_list = property(_get_int_vol_blocks_list)
|
|
||||||
|
|
||||||
def _get_unknown_blocks_list(self):
|
|
||||||
return self._unknown_blocks_list
|
|
||||||
|
|
||||||
unknown_blocks_list = property(_get_unknown_blocks_list)
|
|
||||||
|
|
||||||
def _get_block_count(self):
|
|
||||||
return self._block_count
|
|
||||||
|
|
||||||
block_count = property(_get_block_count)
|
|
||||||
|
|
||||||
def _set_first_peb_num(self, i):
|
|
||||||
self._first_peb_num = i
|
|
||||||
|
|
||||||
def _get_first_peb_num(self):
|
|
||||||
return self._first_peb_num
|
|
||||||
|
|
||||||
first_peb_num = property(_get_first_peb_num, _set_first_peb_num)
|
|
||||||
|
|
||||||
def _get_leb_size(self):
|
|
||||||
return self._leb_size
|
|
||||||
|
|
||||||
leb_size = property(_get_leb_size)
|
|
||||||
|
|
||||||
def _get_peb_size(self):
|
|
||||||
return self.file.block_size
|
|
||||||
|
|
||||||
peb_size = property(_get_peb_size)
|
|
||||||
|
|
||||||
def _get_min_io_size(self):
|
|
||||||
return self._min_io_size
|
|
||||||
|
|
||||||
min_io_size = property(_get_min_io_size)
|
|
||||||
|
|
||||||
def _get_blocks(self):
|
|
||||||
return self._blocks
|
|
||||||
|
|
||||||
blocks = property(_get_blocks)
|
|
||||||
|
|
||||||
def display(self, tab = ''):
|
|
||||||
display.ubi(self, tab)
|
|
||||||
|
|
||||||
|
|
||||||
def get_peb_size(path):
|
|
||||||
file_offset = 0
|
|
||||||
offsets = []
|
|
||||||
f = open(path, 'rb')
|
|
||||||
f.seek(0, 2)
|
|
||||||
file_size = f.tell() + 1
|
|
||||||
f.seek(0)
|
|
||||||
for i in range(0, file_size, FILE_CHUNK_SZ):
|
|
||||||
buf = f.read(FILE_CHUNK_SZ)
|
|
||||||
for m in re.finditer(UBI_EC_HDR_MAGIC, buf):
|
|
||||||
start = m.start()
|
|
||||||
if not file_offset:
|
|
||||||
file_offset = start
|
|
||||||
idx = start
|
|
||||||
else:
|
|
||||||
idx = start + file_offset
|
|
||||||
offsets.append(idx)
|
|
||||||
|
|
||||||
file_offset += FILE_CHUNK_SZ
|
|
||||||
|
|
||||||
f.close()
|
|
||||||
occurances = {}
|
|
||||||
for i in range(0, len(offsets)):
|
|
||||||
try:
|
|
||||||
diff = offsets[i] - offsets[i - 1]
|
|
||||||
except:
|
|
||||||
diff = offsets[i]
|
|
||||||
|
|
||||||
if diff not in occurances:
|
|
||||||
occurances[diff] = 0
|
|
||||||
occurances[diff] += 1
|
|
||||||
|
|
||||||
most_frequent = 0
|
|
||||||
block_size = 0
|
|
||||||
for offset in occurances:
|
|
||||||
if occurances[offset] > most_frequent:
|
|
||||||
most_frequent = occurances[offset]
|
|
||||||
block_size = offset
|
|
||||||
|
|
||||||
return block_size
|
|
||||||
Reference in New Issue
Block a user