Skip to content

Commit a1ab5f2

Browse files
committed
Move parsing of file ident to udf.py.
It makes more sense there. Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
1 parent d8b96a7 commit a1ab5f2

File tree

2 files changed

+32
-9
lines changed

2 files changed

+32
-9
lines changed

pycdlib/pycdlib.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2124,15 +2124,12 @@ def _walk_udf_directories(self, extent_to_inode):
21242124
while offset < len(data):
21252125
current_extent = (abs_file_ident_extent * self.logical_block_size + offset) // self.logical_block_size
21262126

2127-
desc_tag = udfmod.UDFTag()
2128-
desc_tag.parse(data[offset:], current_extent - part_start)
2129-
if desc_tag.tag_ident != 257:
2130-
raise pycdlibexception.PyCdlibInvalidISO('UDF File Identifier Tag identifier not 257')
2131-
file_ident = udfmod.UDFFileIdentifierDescriptor()
2132-
offset += file_ident.parse(data[offset:],
2133-
current_extent,
2134-
desc_tag,
2135-
udf_file_entry)
2127+
file_ident, bytes_forward = udfmod.parse_file_ident(data[offset:],
2128+
current_extent,
2129+
part_start,
2130+
udf_file_entry)
2131+
offset += bytes_forward
2132+
21362133
if file_ident.is_parent():
21372134
# For a parent, no further work to do.
21382135
udf_file_entry.track_file_ident_desc(file_ident)

pycdlib/udf.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5852,3 +5852,29 @@ def parse_file_entry(icbdata, abs_file_entry_extent, icb_log_block_num, parent):
58525852
file_entry.parse(icbdata, abs_file_entry_extent, parent, desc_tag)
58535853

58545854
return file_entry
5855+
5856+
5857+
def parse_file_ident(data, current_extent, part_start, udf_file_entry):
5858+
# type: (bytes, int, int, UDFFileEntry) -> Tuple[UDFFileIdentifierDescriptor, int]
5859+
"""
5860+
An internal method to parse a single UDF File Identifier and return the
5861+
corresponding object.
5862+
5863+
Parameters:
5864+
data - The data to parse.
5865+
current_extent - The extent number the data is located at.
5866+
part_start - The start of the logical partition.
5867+
udf_file_entry - The UDF File Entry that corresponds with this File
5868+
Identifier.
5869+
Returns:
5870+
A tuple where the first item is a UDFFileIdentifierDescriptor, and the
5871+
second item is the number of bytes the descriptor consumed.
5872+
"""
5873+
desc_tag = UDFTag()
5874+
desc_tag.parse(data, current_extent - part_start)
5875+
if desc_tag.tag_ident != 257:
5876+
raise pycdlibexception.PyCdlibInvalidISO('UDF File Identifier Tag identifier not 257')
5877+
file_ident = UDFFileIdentifierDescriptor()
5878+
bytes_forward = file_ident.parse(data, current_extent, desc_tag, udf_file_entry)
5879+
5880+
return file_ident, bytes_forward

0 commit comments

Comments
 (0)