diff --git a/SWCompression.xcodeproj/project.pbxproj b/SWCompression.xcodeproj/project.pbxproj index 02d51bc4..906a91a1 100644 --- a/SWCompression.xcodeproj/project.pbxproj +++ b/SWCompression.xcodeproj/project.pbxproj @@ -214,6 +214,7 @@ 06F276DF1F2BAB4A00E67335 /* 7zEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06F276DE1F2BAB4900E67335 /* 7zEntry.swift */; }; 06FEAD921F54B9CD00AD016E /* EncodingTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FEAD911F54B9CD00AD016E /* EncodingTree.swift */; }; E648151D26A889B8009261F0 /* TarHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = E648151C26A889B8009261F0 /* TarHeader.swift */; }; + E64F71BC26AAFD6A008BB308 /* Data+Tar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E64F71BB26AAFD6A008BB308 /* Data+Tar.swift */; }; E652D8F3263D670900FC229B /* test_nonstandard_runlength.bz2 in Resources */ = {isa = PBXBuildFile; fileRef = E652D8F2263D670900FC229B /* test_nonstandard_runlength.bz2 */; }; E652D8F5263D678000FC229B /* test_nonstandard_runlength.answer in Resources */ = {isa = PBXBuildFile; fileRef = E652D8F4263D678000FC229B /* test_nonstandard_runlength.answer */; }; E66F36242538726E00076A6E /* test_empty.lzma in Resources */ = {isa = PBXBuildFile; fileRef = E66F36232538726E00076A6E /* test_empty.lzma */; }; @@ -439,6 +440,7 @@ 06FEAD911F54B9CD00AD016E /* EncodingTree.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = EncodingTree.swift; path = Sources/Common/CodingTree/EncodingTree.swift; sourceTree = SOURCE_ROOT; }; 06FED40B1DD7717E0013DFB2 /* BZip2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BZip2.swift; sourceTree = ""; }; E648151C26A889B8009261F0 /* TarHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TarHeader.swift; sourceTree = ""; }; + E64F71BB26AAFD6A008BB308 /* Data+Tar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Data+Tar.swift"; sourceTree = ""; }; E652D8F2263D670900FC229B /* test_nonstandard_runlength.bz2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_nonstandard_runlength.bz2; sourceTree = ""; }; E652D8F4263D678000FC229B /* test_nonstandard_runlength.answer */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_nonstandard_runlength.answer; sourceTree = ""; }; E66F36232538726E00076A6E /* test_empty.lzma */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_empty.lzma; sourceTree = ""; }; @@ -641,6 +643,7 @@ 0651FEC11F8E2E9100C49646 /* ContainerEntryType+Tar.swift */, 0656B82A1F8A979A00111605 /* ByteReader+Tar.swift */, 06CFF6B12078C5A5003B8375 /* TarEntryInfoProvider.swift */, + E64F71BB26AAFD6A008BB308 /* Data+Tar.swift */, ); path = TAR; sourceTree = ""; @@ -1112,6 +1115,7 @@ buildActionMask = 2147483647; files = ( 061C06521F0E904600832F0C /* ZipEndOfCentralDirectory.swift in Sources */, + E64F71BC26AAFD6A008BB308 /* Data+Tar.swift in Sources */, 06BB8F301E0C2C720079FB9E /* LZMA2.swift in Sources */, 0620F4C31F8E24B6001C9B7A /* CompressionAlgorithm.swift in Sources */, 06955E491F65C761004D5D79 /* BZip2+Lengths.swift in Sources */, diff --git a/Sources/TAR/Data+Tar.swift b/Sources/TAR/Data+Tar.swift new file mode 100644 index 00000000..c6b4f289 --- /dev/null +++ b/Sources/TAR/Data+Tar.swift @@ -0,0 +1,17 @@ +// Copyright (c) 2021 Timofey Solomko +// Licensed under MIT License +// +// See LICENSE for license information + +import Foundation + +extension Data { + + @inline(__always) + mutating func appendAsTarBlock(_ data: Data) { + self.append(data) + let paddingSize = data.count.roundTo512() - data.count + self.append(Data(count: paddingSize)) + } + +}