@@ -2087,39 +2087,6 @@ def _parse_udf_descriptors(self):
2087
2087
self .udf_file_set_terminator .orig_extent_loc = current_extent
2088
2088
self .udf_file_set_terminator .desc_tag .tag_location = current_extent - self .udf_main_descs .partitions [0 ].part_start_location
2089
2089
2090
- def _parse_udf_file_entry (self , abs_file_entry_extent , icb , parent ):
2091
- # type: (int, udfmod.UDFLongAD, Optional[udfmod.UDFFileEntry]) -> Optional[udfmod.UDFFileEntry]
2092
- """
2093
- An internal method to parse a single UDF File Entry and return the
2094
- corresponding object.
2095
-
2096
- Parameters:
2097
- abs_file_entry_extent - The extent number the file entry starts at.
2098
- icb - The ICB object for the data.
2099
- parent - The parent of the UDF File Entry.
2100
- Returns:
2101
- A UDF File Entry object corresponding to the on-disk File Entry.
2102
- """
2103
- self ._seek_to_extent (abs_file_entry_extent )
2104
- icbdata = self ._cdfp .read (icb .extent_length )
2105
-
2106
- if all (v == 0 for v in bytearray (icbdata )):
2107
- # We have seen ISOs in the wild (Windows 2008 Datacenter Enterprise
2108
- # Standard SP2 x86 DVD) where the UDF File Identifier points to a
2109
- # UDF File Entry of all zeros. In those cases, we just keep the
2110
- # File Identifier, and keep the UDF File Entry blank.
2111
- return None
2112
-
2113
- desc_tag = udfmod .UDFTag ()
2114
- desc_tag .parse (icbdata , icb .log_block_num )
2115
- if desc_tag .tag_ident != 261 :
2116
- raise pycdlibexception .PyCdlibInvalidISO ('UDF File Entry Tag identifier not 261' )
2117
-
2118
- file_entry = udfmod .UDFFileEntry ()
2119
- file_entry .parse (icbdata , abs_file_entry_extent , parent , desc_tag )
2120
-
2121
- return file_entry
2122
-
2123
2090
def _walk_udf_directories (self , extent_to_inode ):
2124
2091
# type: (Dict[int, inode.Inode]) -> None
2125
2092
"""
@@ -2132,9 +2099,14 @@ def _walk_udf_directories(self, extent_to_inode):
2132
2099
Nothing.
2133
2100
"""
2134
2101
part_start = self .udf_main_descs .partitions [0 ].part_start_location
2135
- self .udf_root = self ._parse_udf_file_entry (part_start + self .udf_file_set .root_dir_icb .log_block_num ,
2136
- self .udf_file_set .root_dir_icb ,
2137
- None )
2102
+
2103
+ abs_file_entry_extent = part_start + self .udf_file_set .root_dir_icb .log_block_num
2104
+ self ._seek_to_extent (abs_file_entry_extent )
2105
+ icbdata = self ._cdfp .read (self .udf_file_set .root_dir_icb .extent_length )
2106
+ self .udf_root = udfmod .parse_file_entry (icbdata ,
2107
+ abs_file_entry_extent ,
2108
+ self .udf_file_set .root_dir_icb .log_block_num ,
2109
+ None )
2138
2110
2139
2111
udf_file_entries = collections .deque ([self .udf_root ])
2140
2112
while udf_file_entries :
@@ -2167,9 +2139,12 @@ def _walk_udf_directories(self, extent_to_inode):
2167
2139
continue
2168
2140
2169
2141
abs_file_entry_extent = part_start + file_ident .icb .log_block_num
2170
- next_entry = self ._parse_udf_file_entry (abs_file_entry_extent ,
2171
- file_ident .icb ,
2172
- udf_file_entry )
2142
+ self ._seek_to_extent (abs_file_entry_extent )
2143
+ icbdata = self ._cdfp .read (file_ident .icb .extent_length )
2144
+ next_entry = udfmod .parse_file_entry (icbdata ,
2145
+ abs_file_entry_extent ,
2146
+ file_ident .icb .log_block_num ,
2147
+ udf_file_entry )
2173
2148
2174
2149
# For a non-parent, we delay adding this to the list of
2175
2150
# fi_descs until after we check whether this is a valid
0 commit comments