diff --git a/Sources/TAR/TarExtendedHeader.swift b/Sources/TAR/TarExtendedHeader.swift index b11da288..52ab7f54 100644 --- a/Sources/TAR/TarExtendedHeader.swift +++ b/Sources/TAR/TarExtendedHeader.swift @@ -29,27 +29,40 @@ struct TarExtendedHeader { var comment: String? init(_ data: Data) throws { - // Split header data into entries with "\n" (0x0A) character as a separator. - let entriesData = data.split(separator: 0x0A) - var unknownRecords = [String: String]() - - for entryData in entriesData where !entryData.isEmpty { - let entryDataSplit = entryData.split(separator: 0x20, maxSplits: 1, omittingEmptySubsequences: false) - - guard entryDataSplit.count == 2, - let lengthString = String(data: entryDataSplit[0], encoding: .utf8), - Int(lengthString) == entryData.count + 1 + var i = data.startIndex + while i < data.endIndex { + let lengthStartIndex = i + while data[i] != 0x20 { + i += 1 + } + guard let lengthString = String(data: data[lengthStartIndex..