From fc334ddfeaa0d9134bf9dbbbe26a1e514246d238 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 11 Oct 2017 14:01:26 +0300 Subject: [PATCH] Add two proeprties to TarEntryInfo which indicate if it is an extended header --- Sources/TAR/TarContainer.swift | 7 +++---- Sources/TAR/TarEntryInfo.swift | 5 +++++ 2 files changed, 8 insertions(+), 4 deletions(-) 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)