@@ -4095,31 +4095,17 @@ def SeekToEndOfFile(fp):
40954095 lasttell = fp .tell ()
40964096 return True
40974097
4098- def ReadFileHeaderData (fp , skipchecksum = False , formatspecs = None , saltkey = None ):
4099- if (formatspecs is None ):
4100- formatspecs = __file_format_multi_dict__
4101- filespec = None
4102- delimiter = None
4103- for key , value in formatspecs .items ():
4104- oldseek = fp .tell ()
4105- filetype = fp .read (value ['format_len' ])
4106- formatver = str (int (value ['format_ver' ]))
4107- filever = fp .read (len (formatver )).decode ("UTF-8" )
4108- if (filetype .hex ()== value ['format_hex' ] and formatver == filever ):
4109- filespec = formatspecs [key ]
4110- delimiter = filespec ['format_delimiter' ]
4111- filetypefull = filetype .decode ("UTF-8" )+ filever
4112- break
4113- fp .seek (oldseek , 1 )
4114- if (filespec is None or delimiter is None ):
4115- return False
4116- fp .seek (len (delimiter ), 1 )
4117- outlist = ReadFileHeaderDataBySize (fp , delimiter )
4118- outlist .insert (0 , filetypefull )
4119- if (not ValidateHeaderChecksum (outlist [:- 1 ], outlist [- 2 ], outlist [- 1 ], filespec , saltkey ) and not skipchecksum ):
4098+ def ReadFileHeaderData (fp , rounds = 0 , delimiter = _default_delim (None )):
4099+ """Read `rounds` delimited header fields. Returns a list[str]."""
4100+ if not hasattr (fp , "read" ):
41204101 return False
4121- fp .seek (len (delimiter ), 1 )
4122- return outlist
4102+ rounds = int (rounds )
4103+ if rounds <= 0 :
4104+ return []
4105+ out = []
4106+ for _ in range (rounds ):
4107+ out .append (read_until_delimiter (fp , delimiter , decode = True , errors = "strict" ))
4108+ return out
41234109
41244110def ReadFileHeaderDataWithContent (fp , listonly = False , contentasfile = False , uncompress = True , skipchecksum = False , formatspecs = __file_format_dict__ , saltkey = None ):
41254111 if (not hasattr (fp , "read" )):
0 commit comments