diff --git a/Sources/TAR/TarContainer.swift b/Sources/TAR/TarContainer.swift index f911013a..d0e9f1b5 100644 --- a/Sources/TAR/TarContainer.swift +++ b/Sources/TAR/TarContainer.swift @@ -20,61 +20,21 @@ public class TarContainer: Container { - Throws: `TarError`, which may indicate that either container is damaged or it might not be TAR container at all. - - Returns: Array of `TarEntry` as an array of `ContainerEntry`. + - Returns: Array of `TarEntry`. */ public static func open(container data: Data) throws -> [TarEntry] { - // First, if the TAR container contains only header, it should be at least 512 bytes long. - // So we have to check this. - guard data.count >= 512 else { throw TarError.tooSmallFileIsPassed } + let infos = try info(container: data) - /// Object with input data which supports convenient work with bit shifts. - let pointerData = DataWithPointer(data: data) + var entries = [TarEntry]() - var output = [TarEntry]() - - var lastGlobalExtendedHeader: TarExtendedHeader? - var lastLocalExtendedHeader: TarExtendedHeader? - var longLinkName: String? - var longName: String? - - // Container ends with two zero-filled records. - while pointerData.data[pointerData.index.. [TarEntryInfo] { @@ -85,14 +45,13 @@ public class TarContainer: Container { /// Object with input data which supports convenient work with bit shifts. let pointerData = DataWithPointer(data: data) - var output = [TarEntryInfo]() + var entries = [TarEntryInfo]() var lastGlobalExtendedHeader: TarExtendedHeader? var lastLocalExtendedHeader: TarExtendedHeader? var longLinkName: String? var longName: String? - // TODO: First, populate infos, then get data in second loop. // Container ends with two zero-filled records. while pointerData.data[pointerData.index..