diff --git a/Sources/TAR/TarContainer.swift b/Sources/TAR/TarContainer.swift index f760e97a..1c45b490 100644 --- a/Sources/TAR/TarContainer.swift +++ b/Sources/TAR/TarContainer.swift @@ -80,12 +80,11 @@ public class TarContainer: Container { let entry = TarEntry(info, data) - switch info.tarType { - case .globalExtendedHeader: + if info.isGlobalExtendedHeader { lastGlobalExtendedHeader = String(data: entry.data!, encoding: .utf8) - case .localExtendedHeader: + } else if info.isLocalExtendedHeader { lastLocalExtendedHeader = String(data: entry.data!, encoding: .utf8) - default: + } else { output.append(entry) lastLocalExtendedHeader = nil longName = nil diff --git a/Sources/TAR/TarEntryInfo.swift b/Sources/TAR/TarEntryInfo.swift index fd18b039..e7d22daa 100644 --- a/Sources/TAR/TarEntryInfo.swift +++ b/Sources/TAR/TarEntryInfo.swift @@ -123,6 +123,9 @@ public class TarEntryInfo: ContainerEntryInfo { private let gnuLongName: String? private let gnuLongLinkName: String? + let isGlobalExtendedHeader: Bool + let isLocalExtendedHeader: Bool + let blockStartIndex: Int init(_ pointerData: DataWithPointer, _ globalExtendedHeader: String?, _ localExtendedHeader: String?, @@ -220,6 +223,8 @@ public class TarEntryInfo: ContainerEntryInfo { default: attributesDict[FileAttributeKey.type] = FileAttributeType.typeUnknown } + self.isGlobalExtendedHeader = fileTypeIndicator == "g" + self.isLocalExtendedHeader = fileTypeIndicator == "x" // Linked file name linkedFileName = try pointerData.nullEndedAsciiString(cutoff: 100)