diff --git a/.codeclimate.yml b/.codeclimate.yml
new file mode 100644
index 00000000..09ea4f02
--- /dev/null
+++ b/.codeclimate.yml
@@ -0,0 +1,8 @@
+engines:
+ fixme:
+ enabled: true
+ tailor:
+ enabled: true
+ratings:
+ paths:
+ - "**.swift"
diff --git a/.jazzy.yaml b/.jazzy.yaml
index 261095a8..8ca00b51 100644
--- a/.jazzy.yaml
+++ b/.jazzy.yaml
@@ -3,11 +3,11 @@ clean: true
exclude: Tests/
author: Timofey Solomko
module: SWCompression
-module_version: 3.2.0
+module_version: 3.3.0
copyright: '© 2017 Timofey Solomko'
readme: README.md
github_url: https://github.com/tsolomko/SWCompression
-github_file_prefix: https://github.com/tsolomko/SWCompression/tree/v3.2.0
+github_file_prefix: https://github.com/tsolomko/SWCompression/tree/v3.3.0
theme: fullwidth
custom_categories:
@@ -21,25 +21,29 @@ custom_categories:
children:
- GzipArchive
- GzipHeader
+ - XZArchive
- ZlibArchive
- ZlibHeader
- - XZArchive
- name: Containers
children:
- - ZipContainer
- - ZipEntry
+ - SevenZipContainer
+ - SevenZipEntry
+ - SevenZipEntryInfo
- TarContainer
- TarEntry
+ - ZipContainer
+ - ZipEntry
- name: Errors
children:
- BZip2Error
- DeflateError
- - GzipError
- - LZMA2Error
- LZMAError
+ - LZMA2Error
+ - SevenZipError
- TarError
- - XZError
- ZipError
+ - GzipError
+ - XZError
- ZlibError
- name: Protocols
children:
diff --git a/.swift-version b/.swift-version
index 8c50098d..94ff29cc 100644
--- a/.swift-version
+++ b/.swift-version
@@ -1 +1 @@
-3.1
+3.1.1
diff --git a/.swiftlint.yml b/.swiftlint.yml
index ceea26f4..3ec9ceac 100644
--- a/.swiftlint.yml
+++ b/.swiftlint.yml
@@ -6,7 +6,6 @@ disabled_rules:
opt_in_rules:
- conditional_returns_on_newline
- explicit_init
- - explicit_type_interface
- fatal_error_message
- first_where
- force_unwrapping
@@ -15,3 +14,7 @@ opt_in_rules:
- operator_usage_whitespace
- redundant_nil_coalescing
- switch_case_on_newline
+ - strict_fileprivate
+ - trailing_closure
+ - block_based_kvo
+ - discouraged_direct_init
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index b58a24d9..fdce214e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,34 +1,53 @@
-language: objective-c
-osx_image: xcode8.3
-xcode_project: SWCompression.xcodeproj
-xcode_scheme: SWCompression
env:
global:
- FRAMEWORK_NAME=SWCompression
-before_install:
-- brew update
-- brew outdated carthage || brew upgrade carthage
-- brew install git-lfs
-- git lfs install
-before_script:
-- cd Tests/Test\ Files
-- git lfs pull
-- cd ../..
-before_deploy:
-- carthage build --no-skip-current
-- carthage archive $FRAMEWORK_NAME
-script:
-- xcodebuild clean build test -project SWCompression.xcodeproj -scheme SWCompression
-after_success:
- - bash <(curl -s https://codecov.io/bash)
+ - CC_TEST_REPORTER_ID=87379ba4ed4c1c2f6cd9ab95560364759898a0902effca0c23eddfc16a9ff5ff
+ - GIT_COMMITTED_AT=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then git log -1 --pretty=format:%ct; else git log -1 --skip 1 --pretty=format:%ct; fi)
+matrix:
+ include:
+ - language: objective-c
+ osx_image: xcode8.3
+ xcode_project: SWCompression.xcodeproj
+ xcode_scheme: SWCompression
+ before_install:
+ - gem install slather
+ - brew update
+ - brew upgrade carthage
+ - brew install git-lfs
+ - git lfs install
+ before_script:
+ - cd Tests/Test\ Files
+ - git lfs pull
+ - cd ../..
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-darwin-amd64 > ./cc-test-reporter
+ - chmod +x ./cc-test-reporter
+ - ./cc-test-reporter before-build
+ before_deploy:
+ - carthage build --no-skip-current
+ - carthage archive $FRAMEWORK_NAME
+ script:
+ - xcodebuild clean build test -project SWCompression.xcodeproj -scheme SWCompression
+ after_success:
+ - slather coverage -x --scheme SWCompression SWCompression.xcodeproj/
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
+ deploy:
+ provider: releases
+ api_key:
+ secure: lhJi7BsAuhGo9T4rgD/UWlVRnfrO5xLIF3BUuPHb21045tEXk/BGEHgc9a9CTFm2/iR3SmP/GDsmqfJlMzWLvuTlyV5i8otIodwIp5NYstFhyA2JaEVglmnzlkf/2FkNb5KKJDyGM1KuecYmPRTUUzYThVXl59GZ2esgfiCN26pDeDgwRyJt34jeUj0VzK9JDmEJ/ODG/hvuUWyZp0zni+m6WTPZ7dILeazFEc81WATBfMo5oa8ZBChSM6lDKaW8XyKZWrMXjsK6dKfQTcVwnvrplfw2TqfPVA+YfePcq1os5Do5CELnhrUZMSI6qvOmPauzGStjsAVFTiMaYO6HdHO03mn5L9SUuyhhKqHmh2pAkM1zKxbtfKbk6oi4zJJgvbTjIO4K2X5SUwHFgjULijW9JJeCFjsLfwODvFNFHeLeql3jaKNo6kRn2VvT/uNuT3aZa+r+WeFL0HgD6Z/EEkQW5yI6DocjetRP6y9B0rpA+YyALbd0SkVIqvoywztSfxWwp7eKhQHbG/FTIfWlmMbtLq5xULQb6TyjVHO94iSfsDV2rjAeDJY73P+rPsvej4Y9LFS8VOHcsrFhFlbR9E0NjCO2CH2TZcjXPOdLu4gfapPdiqQIdgWjC6ECUwsq+Ux6jJ6QIrGC2TI/Fw58mtLf1G8SdqBRXo+Kw0IAB4g=
+ file: "$FRAMEWORK_NAME.framework.zip"
+ skip_cleanup: true
+ on:
+ repo: tsolomko/SWCompression
+ tags: true
+ - language: generic
+ os: linux
+ sudo: required
+ dist: trusty
+ git:
+ submodules: false
+ install:
+ - eval "$(curl -sL https://gist.githubusercontent.com/kylef/5c0475ff02b7c7671d2a/raw/9f442512a46d7a2af7b850d65a7e9bd31edfb09b/swiftenv-install.sh)"
+ script:
+ - swift build && swift build -c release
notifications:
email: false
-deploy:
- provider: releases
- api_key:
- secure: lhJi7BsAuhGo9T4rgD/UWlVRnfrO5xLIF3BUuPHb21045tEXk/BGEHgc9a9CTFm2/iR3SmP/GDsmqfJlMzWLvuTlyV5i8otIodwIp5NYstFhyA2JaEVglmnzlkf/2FkNb5KKJDyGM1KuecYmPRTUUzYThVXl59GZ2esgfiCN26pDeDgwRyJt34jeUj0VzK9JDmEJ/ODG/hvuUWyZp0zni+m6WTPZ7dILeazFEc81WATBfMo5oa8ZBChSM6lDKaW8XyKZWrMXjsK6dKfQTcVwnvrplfw2TqfPVA+YfePcq1os5Do5CELnhrUZMSI6qvOmPauzGStjsAVFTiMaYO6HdHO03mn5L9SUuyhhKqHmh2pAkM1zKxbtfKbk6oi4zJJgvbTjIO4K2X5SUwHFgjULijW9JJeCFjsLfwODvFNFHeLeql3jaKNo6kRn2VvT/uNuT3aZa+r+WeFL0HgD6Z/EEkQW5yI6DocjetRP6y9B0rpA+YyALbd0SkVIqvoywztSfxWwp7eKhQHbG/FTIfWlmMbtLq5xULQb6TyjVHO94iSfsDV2rjAeDJY73P+rPsvej4Y9LFS8VOHcsrFhFlbR9E0NjCO2CH2TZcjXPOdLu4gfapPdiqQIdgWjC6ECUwsq+Ux6jJ6QIrGC2TI/Fw58mtLf1G8SdqBRXo+Kw0IAB4g=
- file: "$FRAMEWORK_NAME.framework.zip"
- skip_cleanup: true
- on:
- repo: tsolomko/SWCompression
- tags: true
diff --git a/CHANGELOG.md b/CHANGELOG.md
index edb48a46..70327da2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,17 @@
# Changelog
+v3.3.0
+----------------
+- Introduced support for 7-Zip containers.
+- Added `TarEntry.isLink`.
+- Added `ZipEntry.isLink` and `ZipEntry.linkPath`.
+- Added `ZipEntry.isTextFile`.
+- Added `ContainerEntry.isLink` and `ContainerEntry.linkPath`.
+- Added support for NTFS extra fields in ZIP containers.
+- Detection of UTF-8 in ZIP string fields now favors Code Page 437 more.
+- Renamed build flags included in Cocoapods configurations.
+- Fixed multithreading problems for `ZipEntry.data()`.
+- Fixed `posixPermissions` in `TarEntry.entryAttributes` containing UNIX type byte in some cases.
+
v3.2.0
----------------
- Split source files.
diff --git a/README.md b/README.md
index 895d4563..3ccf249b 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
[](https://cocoapods.org/pods/SWCompression)
[](https://developer.apple.com/swift/)
[](https://travis-ci.org/tsolomko/SWCompression)
-[](https://codecov.io/gh/tsolomko/SWCompression)
+[](https://codeclimate.com/github/tsolomko/SWCompression/coverage)
[](https://cocoapods.org/pods/SWCompression)
[](https://github.com/Carthage/Carthage)
@@ -32,6 +32,7 @@ Features
- Containers:
- ZIP
- TAR
+ - 7-Zip
- Decompression algorithms:
- LZMA/LZMA2
- Deflate
@@ -66,6 +67,7 @@ Available subspecs:
- SWCompression/BZip2
- SWCompression/ZIP
- SWCompression/TAR
+ - SWCompression/SevenZip
You can add some or all of them instead of `pod 'SWCompression'`
@@ -96,17 +98,35 @@ let package = Package(
More info about SPM you can find at [Swift Package Manager's Documentation](https://github.com/apple/swift-package-manager/tree/master/Documentation).
-SWCompression/ZIP and compression methods
------------------------------------------
-Deflate is a default compression method of ZIP containers.
+Options for CocoaPods users
+---------------------------
+Both ZIP and 7-Zip containers have compression method
+which is most likely to be used when compressing files into them.
+This is Deflate for ZIP and LZMA/LZMA2 for 7-Zip.
+Thus, SWCompression/ZIP subspec have SWCompression/Deflate subspec as a dependency
+and SWCompression/LZMA subspec as a dependency for SWCompression/SevenZip.
-This means, that if you use CocoaPods, when installing SWCompression/ZIP it will install SWCompression/Deflate as a dependency.
+But both these containers support other compression methods,
+some of them are implemented in SWCompression.
+For CocoaPods configurations some sort of 'optional dependecies' are provided for such compression methods.
-However, ZIP containers can also support LZMA and BZip2.
-So if you want to enable them in your Pods configuration you need to include SWCompression/LZMA and/or SWCompression/Deflate.
+'Optional dependency' in this context means
+that SWCompression/ZIP or SWCompression/7-Zip will support particular compression methods
+only if a corresponding subspec is expicitly specified in your Podfile and installed.
-If you use Carthage or Swift Package Manager you always have the full package,
-and ZIP will be built with both BZip2 and LZMA support.
+__List of 'optional dependecies'.__
+
+For SWCompression/ZIP:
+ - SWCompression/BZip2
+ - SWCompression/LZMA
+
+For SWCompression/SevenZip:
+ - SWCompression/BZip2
+ - SWCompression/Deflate
+
+__Note:__ If you use Carthage or Swift Package Manager you always have the full package,
+and ZIP will be built with both additional BZip2 and LZMA support
+as well as 7-Zip will be build with both additional Deflate and BZip2 support.
Usage
-----
@@ -138,7 +158,7 @@ This documentation can be found at its own [website](http://tsolomko.github.io/S
#### Handling Errors
If you look at list of available error types and their cases, you may be frightened by their number.
-However, most of these cases (such as `XZError.WrongMagic`) exist for diagnostic purposes.
+However, most of these cases (such as `XZError.wrongMagic`) exist for diagnostic purposes.
Thus, you only need to handle the most common type of error for your archive/algorithm.
For example:
@@ -193,9 +213,9 @@ It is intended to fix this problem, but solution requires backwards-incompatible
Future plans
-------------
-- Better Deflate compression.
-- 7zip containers.
- BZip2 compression.
+- Container API rework.
+- Better Deflate compression.
- Something else...
References
@@ -213,3 +233,4 @@ References
- [Wikipedia article about TAR](https://en.wikipedia.org/wiki/Tar_(computing))
- [Pax specification](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html)
- [Basic TAR specification](https://www.gnu.org/software/tar/manual/html_node/Standard.html)
+- [Apache Commons Compress](https://commons.apache.org/proper/commons-compress/)
diff --git a/SWCompression.podspec b/SWCompression.podspec
index eb783a14..e2e4dc60 100644
--- a/SWCompression.podspec
+++ b/SWCompression.podspec
@@ -1,7 +1,7 @@
Pod::Spec.new do |s|
s.name = "SWCompression"
- s.version = "3.2.0"
+ s.version = "3.3.0"
s.summary = "Framework with implementations in Swift of different (de)compression algorithms"
s.description = <<-DESC
@@ -30,6 +30,7 @@ Pod::Spec.new do |s|
s.subspec 'Deflate' do |sp|
sp.source_files = 'Sources/{Deflate,DeflateCompression,DeflateError,Extensions,Protocols,DataWithPointer,BitReader,HuffmanTree,BitWriter,CheckSums}.swift'
+ sp.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-DSWCOMPRESSION_POD_DEFLATE' }
end
s.subspec 'GZip' do |sp|
@@ -44,12 +45,12 @@ Pod::Spec.new do |s|
s.subspec 'BZip2' do |sp|
sp.source_files = 'Sources/{BZip2,BZip2Error,Extensions,Protocols,CheckSums,DataWithPointer,BitReader,HuffmanTree,BitWriter}.swift'
- sp.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-DSWCOMP_ZIP_POD_BZ2' }
+ sp.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-DSWCOMPRESSION_POD_BZ2' }
end
s.subspec 'LZMA' do |sp|
sp.source_files = 'Sources/{LZMA*,Extensions,Protocols,DataWithPointer}.swift'
- sp.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-DSWCOMP_ZIP_POD_LZMA' }
+ sp.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-DSWCOMPRESSION_POD_LZMA' }
end
s.subspec 'XZ' do |sp|
@@ -60,11 +61,17 @@ Pod::Spec.new do |s|
s.subspec 'ZIP' do |sp|
sp.dependency 'SWCompression/Deflate'
sp.source_files = 'Sources/{Zip*,CheckSums}.swift'
- sp.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-DSWCOMP_ZIP_POD_BUILD' }
+ sp.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-DSWCOMPRESSION_POD_ZIP' }
end
s.subspec 'TAR' do |sp|
sp.source_files = 'Sources/{Tar*,Extensions,Protocols,DataWithPointer}.swift'
end
+ s.subspec 'SevenZip' do |sp|
+ sp.dependency 'SWCompression/LZMA'
+ sp.source_files = 'Sources/{7z*,CheckSums,BitReader}.swift'
+ sp.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-DSWCOMPRESSION_POD_SEVENZIP' }
+ end
+
end
diff --git a/SWCompression.xcodeproj/project.pbxproj b/SWCompression.xcodeproj/project.pbxproj
index db4fc03c..784d0e02 100644
--- a/SWCompression.xcodeproj/project.pbxproj
+++ b/SWCompression.xcodeproj/project.pbxproj
@@ -7,6 +7,8 @@
objects = {
/* Begin PBXBuildFile section */
+ 061358FB1F274E080065BCEB /* test2.7z in Resources */ = {isa = PBXBuildFile; fileRef = 061358F91F274E080065BCEB /* test2.7z */; };
+ 061358FC1F274E080065BCEB /* test3.7z in Resources */ = {isa = PBXBuildFile; fileRef = 061358FA1F274E080065BCEB /* test3.7z */; };
061C06211F0E89D900832F0C /* XZError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 061C06201F0E89D900832F0C /* XZError.swift */; };
061C06221F0E89D900832F0C /* XZError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 061C06201F0E89D900832F0C /* XZError.swift */; };
061C06231F0E89D900832F0C /* XZError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 061C06201F0E89D900832F0C /* XZError.swift */; };
@@ -57,6 +59,15 @@
061C065F1F0E90E600832F0C /* TarEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 061C065B1F0E90E600832F0C /* TarEntry.swift */; };
061FCE2D1DBCC6A30052F7BE /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 061FCE2C1DBCC6A30052F7BE /* Constants.swift */; };
0621E5181F0451C200C0003F /* test_multi.gz in Resources */ = {isa = PBXBuildFile; fileRef = 0621E5171F0451C200C0003F /* test_multi.gz */; };
+ 0623135B1F33B41B0070A574 /* test_empty_cont.tar in Resources */ = {isa = PBXBuildFile; fileRef = 062313571F33B41B0070A574 /* test_empty_cont.tar */; };
+ 0623135C1F33B41B0070A574 /* test_empty_dir.tar in Resources */ = {isa = PBXBuildFile; fileRef = 062313581F33B41B0070A574 /* test_empty_dir.tar */; };
+ 0623135D1F33B41B0070A574 /* test_empty_file.tar in Resources */ = {isa = PBXBuildFile; fileRef = 062313591F33B41B0070A574 /* test_empty_file.tar */; };
+ 0623135E1F33B41B0070A574 /* test_win.tar in Resources */ = {isa = PBXBuildFile; fileRef = 0623135A1F33B41B0070A574 /* test_win.tar */; };
+ 062313631F33B4280070A574 /* test_empty_cont.zip in Resources */ = {isa = PBXBuildFile; fileRef = 0623135F1F33B4280070A574 /* test_empty_cont.zip */; };
+ 062313641F33B4280070A574 /* test_empty_dir.zip in Resources */ = {isa = PBXBuildFile; fileRef = 062313601F33B4280070A574 /* test_empty_dir.zip */; };
+ 062313651F33B4280070A574 /* test_empty_file.zip in Resources */ = {isa = PBXBuildFile; fileRef = 062313611F33B4280070A574 /* test_empty_file.zip */; };
+ 062313661F33B4280070A574 /* test_win.zip in Resources */ = {isa = PBXBuildFile; fileRef = 062313621F33B4280070A574 /* test_win.zip */; };
+ 062313681F33B4510070A574 /* test_win.7z in Resources */ = {isa = PBXBuildFile; fileRef = 062313671F33B4510070A574 /* test_win.7z */; };
063336B71F06F0B6009EC0A3 /* test_multi_pad.xz in Resources */ = {isa = PBXBuildFile; fileRef = 063336B51F06F0B6009EC0A3 /* test_multi_pad.xz */; };
063336B81F06F0B6009EC0A3 /* test_multi.xz in Resources */ = {isa = PBXBuildFile; fileRef = 063336B61F06F0B6009EC0A3 /* test_multi.xz */; };
06393DF51F1A7F8E00A647A0 /* ZipCommon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06393DF41F1A7F8E00A647A0 /* ZipCommon.swift */; };
@@ -82,6 +93,16 @@
063DF11A1DE1F2E200F38082 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 063DF1061DE1F07800F38082 /* Extensions.swift */; };
063DF11C1DE1F2E200F38082 /* HuffmanTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = 063DF1081DE1F07800F38082 /* HuffmanTree.swift */; };
063DF11D1DE1F2E200F38082 /* Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 063DF1091DE1F07800F38082 /* Protocols.swift */; };
+ 064F72241F1E5D4400017297 /* 7zContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72231F1E5D4400017297 /* 7zContainer.swift */; };
+ 064F72251F1E5D4400017297 /* 7zContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72231F1E5D4400017297 /* 7zContainer.swift */; };
+ 064F72261F1E5D4400017297 /* 7zContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72231F1E5D4400017297 /* 7zContainer.swift */; };
+ 064F72271F1E5D4400017297 /* 7zContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72231F1E5D4400017297 /* 7zContainer.swift */; };
+ 064F72291F1E638A00017297 /* 7zError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72281F1E638A00017297 /* 7zError.swift */; };
+ 064F722A1F1E638A00017297 /* 7zError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72281F1E638A00017297 /* 7zError.swift */; };
+ 064F722B1F1E638A00017297 /* 7zError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72281F1E638A00017297 /* 7zError.swift */; };
+ 064F722C1F1E638A00017297 /* 7zError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72281F1E638A00017297 /* 7zError.swift */; };
+ 064F722F1F1E63D800017297 /* test1.7z in Resources */ = {isa = PBXBuildFile; fileRef = 064F722E1F1E63D800017297 /* test1.7z */; };
+ 064F72311F1E63E200017297 /* 7zTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72301F1E63E200017297 /* 7zTests.swift */; };
065569681DC65C2A00A47E66 /* GzipArchive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 063364E21DC52979007E313F /* GzipArchive.swift */; };
065569691DC65C2A00A47E66 /* ZlibArchive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064492581DC606D400F10981 /* ZlibArchive.swift */; };
0655696A1DC65C2A00A47E66 /* Deflate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 061FCE251DBCC4BE0052F7BE /* Deflate.swift */; };
@@ -91,6 +112,27 @@
065569761DC65C2B00A47E66 /* GzipArchive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 063364E21DC52979007E313F /* GzipArchive.swift */; };
065569771DC65C2B00A47E66 /* ZlibArchive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064492581DC606D400F10981 /* ZlibArchive.swift */; };
065569781DC65C2B00A47E66 /* Deflate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 061FCE251DBCC4BE0052F7BE /* Deflate.swift */; };
+ 06595E0E1F1E8252006501C2 /* 7zFolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06595E0D1F1E8252006501C2 /* 7zFolder.swift */; };
+ 06595E0F1F1E8252006501C2 /* 7zFolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06595E0D1F1E8252006501C2 /* 7zFolder.swift */; };
+ 06595E101F1E8252006501C2 /* 7zFolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06595E0D1F1E8252006501C2 /* 7zFolder.swift */; };
+ 06595E111F1E8252006501C2 /* 7zFolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06595E0D1F1E8252006501C2 /* 7zFolder.swift */; };
+ 06595E131F1E90C2006501C2 /* 7zCoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06595E121F1E90C2006501C2 /* 7zCoder.swift */; };
+ 06595E141F1E90C2006501C2 /* 7zCoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06595E121F1E90C2006501C2 /* 7zCoder.swift */; };
+ 06595E151F1E90C2006501C2 /* 7zCoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06595E121F1E90C2006501C2 /* 7zCoder.swift */; };
+ 06595E161F1E90C2006501C2 /* 7zCoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06595E121F1E90C2006501C2 /* 7zCoder.swift */; };
+ 065D0ADC1F2B9D9100CE2DA8 /* 7zEntryInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 065D0ADB1F2B9D9100CE2DA8 /* 7zEntryInfo.swift */; };
+ 065D0ADD1F2B9D9100CE2DA8 /* 7zEntryInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 065D0ADB1F2B9D9100CE2DA8 /* 7zEntryInfo.swift */; };
+ 065D0ADE1F2B9D9100CE2DA8 /* 7zEntryInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 065D0ADB1F2B9D9100CE2DA8 /* 7zEntryInfo.swift */; };
+ 065D0ADF1F2B9D9100CE2DA8 /* 7zEntryInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 065D0ADB1F2B9D9100CE2DA8 /* 7zEntryInfo.swift */; };
+ 0660C1321F3B3E6B002D42E4 /* test_7z_bzip2.7z in Resources */ = {isa = PBXBuildFile; fileRef = 0660C12F1F3B3E6B002D42E4 /* test_7z_bzip2.7z */; };
+ 0660C1331F3B3E6B002D42E4 /* test_7z_copy.7z in Resources */ = {isa = PBXBuildFile; fileRef = 0660C1301F3B3E6B002D42E4 /* test_7z_copy.7z */; };
+ 0660C1341F3B3E6B002D42E4 /* test_7z_deflate.7z in Resources */ = {isa = PBXBuildFile; fileRef = 0660C1311F3B3E6B002D42E4 /* test_7z_deflate.7z */; };
+ 066348CD1F35E32200F3DC7D /* test_anti_file.7z in Resources */ = {isa = PBXBuildFile; fileRef = 066348CC1F35E32200F3DC7D /* test_anti_file.7z */; };
+ 066348CF1F35E54700F3DC7D /* test_multi_blocks.7z in Resources */ = {isa = PBXBuildFile; fileRef = 066348CE1F35E54700F3DC7D /* test_multi_blocks.7z */; };
+ 066348D41F35E7F500F3DC7D /* test_all_timestamps.7z in Resources */ = {isa = PBXBuildFile; fileRef = 066348D01F35E7F500F3DC7D /* test_all_timestamps.7z */; };
+ 066348D51F35E7F500F3DC7D /* test_complicated_coding_scheme.7z in Resources */ = {isa = PBXBuildFile; fileRef = 066348D11F35E7F500F3DC7D /* test_complicated_coding_scheme.7z */; };
+ 066348D61F35E7F500F3DC7D /* test_encrypted_header.7z in Resources */ = {isa = PBXBuildFile; fileRef = 066348D21F35E7F500F3DC7D /* test_encrypted_header.7z */; };
+ 066348D71F35E7F500F3DC7D /* test_single_thread.7z in Resources */ = {isa = PBXBuildFile; fileRef = 066348D31F35E7F500F3DC7D /* test_single_thread.7z */; };
067518361E2A86F700D16354 /* ZipContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 067518351E2A86F700D16354 /* ZipContainer.swift */; };
067518371E2A86F700D16354 /* ZipContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 067518351E2A86F700D16354 /* ZipContainer.swift */; };
067518381E2A86F700D16354 /* ZipContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 067518351E2A86F700D16354 /* ZipContainer.swift */; };
@@ -106,6 +148,9 @@
0685E6241F123F0D008655AA /* test_zip_bzip2.zip in Resources */ = {isa = PBXBuildFile; fileRef = 0685E6231F123F0D008655AA /* test_zip_bzip2.zip */; };
068B36791ED0AC050016269E /* full_test.tar in Resources */ = {isa = PBXBuildFile; fileRef = 068B36781ED0AC050016269E /* full_test.tar */; };
0691B9401EBE3E100037EE58 /* test.tar in Resources */ = {isa = PBXBuildFile; fileRef = 0691B93F1EBE3E100037EE58 /* test.tar */; };
+ 0693DF521F2E499F00602300 /* test_empty_dir.7z in Resources */ = {isa = PBXBuildFile; fileRef = 0693DF501F2E499F00602300 /* test_empty_dir.7z */; };
+ 0693DF531F2E499F00602300 /* test_empty_file.7z in Resources */ = {isa = PBXBuildFile; fileRef = 0693DF511F2E499F00602300 /* test_empty_file.7z */; };
+ 0693DF551F2E4AEE00602300 /* test_empty_cont.7z in Resources */ = {isa = PBXBuildFile; fileRef = 0693DF541F2E4AEE00602300 /* test_empty_cont.7z */; };
0696E5C61ED0B22F00921D4D /* TarTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0696E5C51ED0B22F00921D4D /* TarTests.swift */; };
06991C701E05A9F70030FF07 /* test9.lzma in Resources */ = {isa = PBXBuildFile; fileRef = 06991C6D1E05A9F70030FF07 /* test9.lzma */; };
06991C711E05A9F70030FF07 /* test10.lzma in Resources */ = {isa = PBXBuildFile; fileRef = 06991C6E1E05A9F70030FF07 /* test10.lzma */; };
@@ -160,11 +205,39 @@
06A393441DE0713300182E12 /* SWCompression.h in Headers */ = {isa = PBXBuildFile; fileRef = 06A393421DE070B500182E12 /* SWCompression.h */; settings = {ATTRIBUTES = (Public, ); }; };
06A393451DE0713A00182E12 /* SWCompression.h in Headers */ = {isa = PBXBuildFile; fileRef = 06A393421DE070B500182E12 /* SWCompression.h */; settings = {ATTRIBUTES = (Public, ); }; };
06A393461DE0714000182E12 /* SWCompression.h in Headers */ = {isa = PBXBuildFile; fileRef = 06A393421DE070B500182E12 /* SWCompression.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 06A960511F1E7D040078E6D1 /* 7zStreamInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960501F1E7D040078E6D1 /* 7zStreamInfo.swift */; };
+ 06A960521F1E7D040078E6D1 /* 7zStreamInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960501F1E7D040078E6D1 /* 7zStreamInfo.swift */; };
+ 06A960531F1E7D040078E6D1 /* 7zStreamInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960501F1E7D040078E6D1 /* 7zStreamInfo.swift */; };
+ 06A960541F1E7D040078E6D1 /* 7zStreamInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960501F1E7D040078E6D1 /* 7zStreamInfo.swift */; };
+ 06A960561F1E7D0B0078E6D1 /* 7zPackInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960551F1E7D0B0078E6D1 /* 7zPackInfo.swift */; };
+ 06A960571F1E7D0B0078E6D1 /* 7zPackInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960551F1E7D0B0078E6D1 /* 7zPackInfo.swift */; };
+ 06A960581F1E7D0B0078E6D1 /* 7zPackInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960551F1E7D0B0078E6D1 /* 7zPackInfo.swift */; };
+ 06A960591F1E7D0B0078E6D1 /* 7zPackInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960551F1E7D0B0078E6D1 /* 7zPackInfo.swift */; };
+ 06A9605B1F1E7D990078E6D1 /* 7zHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A9605A1F1E7D990078E6D1 /* 7zHeader.swift */; };
+ 06A9605C1F1E7D990078E6D1 /* 7zHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A9605A1F1E7D990078E6D1 /* 7zHeader.swift */; };
+ 06A9605D1F1E7D990078E6D1 /* 7zHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A9605A1F1E7D990078E6D1 /* 7zHeader.swift */; };
+ 06A9605E1F1E7D990078E6D1 /* 7zHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A9605A1F1E7D990078E6D1 /* 7zHeader.swift */; };
+ 06A960601F1E7DE20078E6D1 /* 7zFileInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A9605F1F1E7DE20078E6D1 /* 7zFileInfo.swift */; };
+ 06A960611F1E7DE20078E6D1 /* 7zFileInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A9605F1F1E7DE20078E6D1 /* 7zFileInfo.swift */; };
+ 06A960621F1E7DE20078E6D1 /* 7zFileInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A9605F1F1E7DE20078E6D1 /* 7zFileInfo.swift */; };
+ 06A960631F1E7DE20078E6D1 /* 7zFileInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A9605F1F1E7DE20078E6D1 /* 7zFileInfo.swift */; };
+ 06A960651F1E7DF60078E6D1 /* 7zCoderInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960641F1E7DF60078E6D1 /* 7zCoderInfo.swift */; };
+ 06A960661F1E7DF60078E6D1 /* 7zCoderInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960641F1E7DF60078E6D1 /* 7zCoderInfo.swift */; };
+ 06A960671F1E7DF60078E6D1 /* 7zCoderInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960641F1E7DF60078E6D1 /* 7zCoderInfo.swift */; };
+ 06A960681F1E7DF60078E6D1 /* 7zCoderInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960641F1E7DF60078E6D1 /* 7zCoderInfo.swift */; };
+ 06A9606A1F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960691F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift */; };
+ 06A9606B1F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960691F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift */; };
+ 06A9606C1F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960691F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift */; };
+ 06A9606D1F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A960691F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift */; };
06ADB2D91EBCEFA60053A188 /* TarContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06ADB2D81EBCEFA60053A188 /* TarContainer.swift */; };
06ADB2DA1EBCEFA60053A188 /* TarContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06ADB2D81EBCEFA60053A188 /* TarContainer.swift */; };
06ADB2DB1EBCEFA60053A188 /* TarContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06ADB2D81EBCEFA60053A188 /* TarContainer.swift */; };
06ADB2DC1EBCEFA60053A188 /* TarContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06ADB2D81EBCEFA60053A188 /* TarContainer.swift */; };
06B374CB1E0EECD500064853 /* random_file.zlib in Resources */ = {isa = PBXBuildFile; fileRef = 06B374CA1E0EECD500064853 /* random_file.zlib */; };
+ 06B689581F278815007C9316 /* 7zProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06B689571F278815007C9316 /* 7zProperty.swift */; };
+ 06B689591F278815007C9316 /* 7zProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06B689571F278815007C9316 /* 7zProperty.swift */; };
+ 06B6895A1F278815007C9316 /* 7zProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06B689571F278815007C9316 /* 7zProperty.swift */; };
+ 06B6895B1F278815007C9316 /* 7zProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06B689571F278815007C9316 /* 7zProperty.swift */; };
06BB8F301E0C2C720079FB9E /* LZMA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06BB8F2F1E0C2C720079FB9E /* LZMA2.swift */; };
06BB8F311E0C2C720079FB9E /* LZMA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06BB8F2F1E0C2C720079FB9E /* LZMA2.swift */; };
06BB8F321E0C2C720079FB9E /* LZMA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06BB8F2F1E0C2C720079FB9E /* LZMA2.swift */; };
@@ -222,6 +295,7 @@
06D3456B1F102E740057173F /* test_pax.tar in Resources */ = {isa = PBXBuildFile; fileRef = 06D345661F102E740057173F /* test_pax.tar */; };
06D3456C1F102E740057173F /* test_ustar.tar in Resources */ = {isa = PBXBuildFile; fileRef = 06D345671F102E740057173F /* test_ustar.tar */; };
06D3456D1F102E740057173F /* test_v7.tar in Resources */ = {isa = PBXBuildFile; fileRef = 06D345681F102E740057173F /* test_v7.tar */; };
+ 06DD48A71F2D24EF00F45599 /* SWCompressionSourceCode.7z in Resources */ = {isa = PBXBuildFile; fileRef = 06DD48A61F2D24EF00F45599 /* SWCompressionSourceCode.7z */; };
06E2346C1E068E9600F18798 /* XZArchive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E2346B1E068E9600F18798 /* XZArchive.swift */; };
06E2346D1E068E9600F18798 /* XZArchive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E2346B1E068E9600F18798 /* XZArchive.swift */; };
06E2346E1E068E9600F18798 /* XZArchive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E2346B1E068E9600F18798 /* XZArchive.swift */; };
@@ -231,6 +305,10 @@
06E234831E06A6C200F18798 /* CheckSums.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E234811E06A6C200F18798 /* CheckSums.swift */; };
06E234841E06A6C200F18798 /* CheckSums.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E234811E06A6C200F18798 /* CheckSums.swift */; };
06E234851E06A6C200F18798 /* CheckSums.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E234811E06A6C200F18798 /* CheckSums.swift */; };
+ 06F276DF1F2BAB4A00E67335 /* 7zEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06F276DE1F2BAB4900E67335 /* 7zEntry.swift */; };
+ 06F276E01F2BAB4A00E67335 /* 7zEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06F276DE1F2BAB4900E67335 /* 7zEntry.swift */; };
+ 06F276E11F2BAB4A00E67335 /* 7zEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06F276DE1F2BAB4900E67335 /* 7zEntry.swift */; };
+ 06F276E21F2BAB4A00E67335 /* 7zEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06F276DE1F2BAB4900E67335 /* 7zEntry.swift */; };
06FED40D1DD7717E0013DFB2 /* BZip2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FED40B1DD7717E0013DFB2 /* BZip2.swift */; };
06FED40E1DD7717E0013DFB2 /* BZip2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FED40B1DD7717E0013DFB2 /* BZip2.swift */; };
06FED40F1DD7717E0013DFB2 /* BZip2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FED40B1DD7717E0013DFB2 /* BZip2.swift */; };
@@ -247,6 +325,8 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
+ 061358F91F274E080065BCEB /* test2.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test2.7z; sourceTree = ""; };
+ 061358FA1F274E080065BCEB /* test3.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test3.7z; sourceTree = ""; };
061C06201F0E89D900832F0C /* XZError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XZError.swift; sourceTree = ""; };
061C06251F0E8A0300832F0C /* GzipError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GzipError.swift; sourceTree = ""; };
061C062A1F0E8A1D00832F0C /* GzipHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GzipHeader.swift; sourceTree = ""; };
@@ -262,6 +342,15 @@
061FCE251DBCC4BE0052F7BE /* Deflate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Deflate.swift; sourceTree = ""; };
061FCE2C1DBCC6A30052F7BE /* Constants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; };
0621E5171F0451C200C0003F /* test_multi.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = test_multi.gz; sourceTree = ""; };
+ 062313571F33B41B0070A574 /* test_empty_cont.tar */ = {isa = PBXFileReference; lastKnownFileType = archive.tar; path = test_empty_cont.tar; sourceTree = ""; };
+ 062313581F33B41B0070A574 /* test_empty_dir.tar */ = {isa = PBXFileReference; lastKnownFileType = archive.tar; path = test_empty_dir.tar; sourceTree = ""; };
+ 062313591F33B41B0070A574 /* test_empty_file.tar */ = {isa = PBXFileReference; lastKnownFileType = archive.tar; path = test_empty_file.tar; sourceTree = ""; };
+ 0623135A1F33B41B0070A574 /* test_win.tar */ = {isa = PBXFileReference; lastKnownFileType = archive.tar; path = test_win.tar; sourceTree = ""; };
+ 0623135F1F33B4280070A574 /* test_empty_cont.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = test_empty_cont.zip; sourceTree = ""; };
+ 062313601F33B4280070A574 /* test_empty_dir.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = test_empty_dir.zip; sourceTree = ""; };
+ 062313611F33B4280070A574 /* test_empty_file.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = test_empty_file.zip; sourceTree = ""; };
+ 062313621F33B4280070A574 /* test_win.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = test_win.zip; sourceTree = ""; };
+ 062313671F33B4510070A574 /* test_win.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_win.7z; sourceTree = ""; };
063336B51F06F0B6009EC0A3 /* test_multi_pad.xz */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_multi_pad.xz; sourceTree = ""; };
063336B61F06F0B6009EC0A3 /* test_multi.xz */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_multi.xz; sourceTree = ""; };
063364E21DC52979007E313F /* GzipArchive.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GzipArchive.swift; sourceTree = ""; };
@@ -274,9 +363,25 @@
063DF1081DE1F07800F38082 /* HuffmanTree.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HuffmanTree.swift; path = Sources/HuffmanTree.swift; sourceTree = SOURCE_ROOT; };
063DF1091DE1F07800F38082 /* Protocols.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Protocols.swift; path = Sources/Protocols.swift; sourceTree = SOURCE_ROOT; };
064492581DC606D400F10981 /* ZlibArchive.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZlibArchive.swift; sourceTree = ""; };
+ 064F72231F1E5D4400017297 /* 7zContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = 7zContainer.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
+ 064F72281F1E638A00017297 /* 7zError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 7zError.swift; sourceTree = ""; };
+ 064F722E1F1E63D800017297 /* test1.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test1.7z; sourceTree = ""; };
+ 064F72301F1E63E200017297 /* 7zTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 7zTests.swift; sourceTree = ""; };
0655693F1DC659FF00A47E66 /* SWCompression.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SWCompression.framework; sourceTree = BUILT_PRODUCTS_DIR; };
0655694C1DC65A8000A47E66 /* SWCompression.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SWCompression.framework; sourceTree = BUILT_PRODUCTS_DIR; };
065569591DC65A9400A47E66 /* SWCompression.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SWCompression.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 06595E0D1F1E8252006501C2 /* 7zFolder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 7zFolder.swift; sourceTree = ""; };
+ 06595E121F1E90C2006501C2 /* 7zCoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = 7zCoder.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
+ 065D0ADB1F2B9D9100CE2DA8 /* 7zEntryInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 7zEntryInfo.swift; sourceTree = ""; };
+ 0660C12F1F3B3E6B002D42E4 /* test_7z_bzip2.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_7z_bzip2.7z; sourceTree = ""; };
+ 0660C1301F3B3E6B002D42E4 /* test_7z_copy.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_7z_copy.7z; sourceTree = ""; };
+ 0660C1311F3B3E6B002D42E4 /* test_7z_deflate.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_7z_deflate.7z; sourceTree = ""; };
+ 066348CC1F35E32200F3DC7D /* test_anti_file.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_anti_file.7z; sourceTree = ""; };
+ 066348CE1F35E54700F3DC7D /* test_multi_blocks.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_multi_blocks.7z; sourceTree = ""; };
+ 066348D01F35E7F500F3DC7D /* test_all_timestamps.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_all_timestamps.7z; sourceTree = ""; };
+ 066348D11F35E7F500F3DC7D /* test_complicated_coding_scheme.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_complicated_coding_scheme.7z; sourceTree = ""; };
+ 066348D21F35E7F500F3DC7D /* test_encrypted_header.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_encrypted_header.7z; sourceTree = ""; };
+ 066348D31F35E7F500F3DC7D /* test_single_thread.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_single_thread.7z; sourceTree = ""; };
067518351E2A86F700D16354 /* ZipContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZipContainer.swift; sourceTree = ""; };
0675183C1E2A883600D16354 /* ZipTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZipTests.swift; sourceTree = ""; };
0680E1B01DDA2D7C005C05EB /* ZlibTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZlibTests.swift; sourceTree = ""; };
@@ -286,6 +391,9 @@
0685E6231F123F0D008655AA /* test_zip_bzip2.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = test_zip_bzip2.zip; sourceTree = ""; };
068B36781ED0AC050016269E /* full_test.tar */ = {isa = PBXFileReference; lastKnownFileType = archive.tar; path = full_test.tar; sourceTree = ""; };
0691B93F1EBE3E100037EE58 /* test.tar */ = {isa = PBXFileReference; lastKnownFileType = archive.tar; path = test.tar; sourceTree = ""; };
+ 0693DF501F2E499F00602300 /* test_empty_dir.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_empty_dir.7z; sourceTree = ""; };
+ 0693DF511F2E499F00602300 /* test_empty_file.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_empty_file.7z; sourceTree = ""; };
+ 0693DF541F2E4AEE00602300 /* test_empty_cont.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_empty_cont.7z; sourceTree = ""; };
0696E5C51ED0B22F00921D4D /* TarTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TarTests.swift; sourceTree = ""; };
06991C6D1E05A9F70030FF07 /* test9.lzma */ = {isa = PBXFileReference; lastKnownFileType = file; path = test9.lzma; sourceTree = ""; };
06991C6E1E05A9F70030FF07 /* test10.lzma */ = {isa = PBXFileReference; lastKnownFileType = file; path = test10.lzma; sourceTree = ""; };
@@ -319,8 +427,15 @@
069F276F1EDA0D5E00736269 /* TestUnicode.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = TestUnicode.zip; sourceTree = ""; };
06A393411DE070B500182E12 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
06A393421DE070B500182E12 /* SWCompression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SWCompression.h; sourceTree = ""; };
+ 06A960501F1E7D040078E6D1 /* 7zStreamInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = 7zStreamInfo.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
+ 06A960551F1E7D0B0078E6D1 /* 7zPackInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 7zPackInfo.swift; sourceTree = ""; };
+ 06A9605A1F1E7D990078E6D1 /* 7zHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 7zHeader.swift; sourceTree = ""; };
+ 06A9605F1F1E7DE20078E6D1 /* 7zFileInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 7zFileInfo.swift; sourceTree = ""; };
+ 06A960641F1E7DF60078E6D1 /* 7zCoderInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = 7zCoderInfo.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
+ 06A960691F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = 7zSubstreamInfo.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
06ADB2D81EBCEFA60053A188 /* TarContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TarContainer.swift; sourceTree = ""; };
06B374CA1E0EECD500064853 /* random_file.zlib */ = {isa = PBXFileReference; lastKnownFileType = file; path = random_file.zlib; sourceTree = ""; };
+ 06B689571F278815007C9316 /* 7zProperty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 7zProperty.swift; sourceTree = ""; };
06BB8F2F1E0C2C720079FB9E /* LZMA2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LZMA2.swift; sourceTree = ""; };
06BD0D201E3D0C630054AA5C /* SWCompressionSourceCode.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = SWCompressionSourceCode.zip; sourceTree = ""; };
06BD0D211E3D0C630054AA5C /* TestDataDescriptor.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = TestDataDescriptor.zip; sourceTree = ""; };
@@ -359,9 +474,11 @@
06D345661F102E740057173F /* test_pax.tar */ = {isa = PBXFileReference; lastKnownFileType = archive.tar; path = test_pax.tar; sourceTree = ""; };
06D345671F102E740057173F /* test_ustar.tar */ = {isa = PBXFileReference; lastKnownFileType = archive.tar; path = test_ustar.tar; sourceTree = ""; };
06D345681F102E740057173F /* test_v7.tar */ = {isa = PBXFileReference; lastKnownFileType = archive.tar; path = test_v7.tar; sourceTree = ""; };
+ 06DD48A61F2D24EF00F45599 /* SWCompressionSourceCode.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = SWCompressionSourceCode.7z; sourceTree = ""; };
06E2346B1E068E9600F18798 /* XZArchive.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XZArchive.swift; sourceTree = ""; };
06E2347F1E069ABD00F18798 /* XzTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XzTests.swift; sourceTree = ""; };
06E234811E06A6C200F18798 /* CheckSums.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CheckSums.swift; path = Sources/CheckSums.swift; sourceTree = SOURCE_ROOT; };
+ 06F276DE1F2BAB4900E67335 /* 7zEntry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 7zEntry.swift; sourceTree = ""; };
06FED40B1DD7717E0013DFB2 /* BZip2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BZip2.swift; sourceTree = ""; };
/* End PBXFileReference section */
@@ -468,9 +585,57 @@
path = "Long names";
sourceTree = "";
};
+ 064F72221F1E5B9C00017297 /* 7-Zip */ = {
+ isa = PBXGroup;
+ children = (
+ 064F72231F1E5D4400017297 /* 7zContainer.swift */,
+ 06A9605A1F1E7D990078E6D1 /* 7zHeader.swift */,
+ 06B689571F278815007C9316 /* 7zProperty.swift */,
+ 06A960501F1E7D040078E6D1 /* 7zStreamInfo.swift */,
+ 06A960551F1E7D0B0078E6D1 /* 7zPackInfo.swift */,
+ 06A960641F1E7DF60078E6D1 /* 7zCoderInfo.swift */,
+ 06595E0D1F1E8252006501C2 /* 7zFolder.swift */,
+ 06595E121F1E90C2006501C2 /* 7zCoder.swift */,
+ 06A960691F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift */,
+ 06A9605F1F1E7DE20078E6D1 /* 7zFileInfo.swift */,
+ 064F72281F1E638A00017297 /* 7zError.swift */,
+ 065D0ADB1F2B9D9100CE2DA8 /* 7zEntryInfo.swift */,
+ 06F276DE1F2BAB4900E67335 /* 7zEntry.swift */,
+ );
+ name = "7-Zip";
+ sourceTree = "";
+ };
+ 064F722D1F1E63D800017297 /* 7z */ = {
+ isa = PBXGroup;
+ children = (
+ 0660C12F1F3B3E6B002D42E4 /* test_7z_bzip2.7z */,
+ 0660C1301F3B3E6B002D42E4 /* test_7z_copy.7z */,
+ 0660C1311F3B3E6B002D42E4 /* test_7z_deflate.7z */,
+ 066348CC1F35E32200F3DC7D /* test_anti_file.7z */,
+ 066348CE1F35E54700F3DC7D /* test_multi_blocks.7z */,
+ 066348D01F35E7F500F3DC7D /* test_all_timestamps.7z */,
+ 066348D11F35E7F500F3DC7D /* test_complicated_coding_scheme.7z */,
+ 066348D21F35E7F500F3DC7D /* test_encrypted_header.7z */,
+ 066348D31F35E7F500F3DC7D /* test_single_thread.7z */,
+ 062313671F33B4510070A574 /* test_win.7z */,
+ 06DD48A61F2D24EF00F45599 /* SWCompressionSourceCode.7z */,
+ 0693DF501F2E499F00602300 /* test_empty_dir.7z */,
+ 0693DF511F2E499F00602300 /* test_empty_file.7z */,
+ 0693DF541F2E4AEE00602300 /* test_empty_cont.7z */,
+ 061358F91F274E080065BCEB /* test2.7z */,
+ 061358FA1F274E080065BCEB /* test3.7z */,
+ 064F722E1F1E63D800017297 /* test1.7z */,
+ );
+ path = 7z;
+ sourceTree = "";
+ };
0691B93E1EBE3E100037EE58 /* TAR */ = {
isa = PBXGroup;
children = (
+ 062313571F33B41B0070A574 /* test_empty_cont.tar */,
+ 062313581F33B41B0070A574 /* test_empty_dir.tar */,
+ 062313591F33B41B0070A574 /* test_empty_file.tar */,
+ 0623135A1F33B41B0070A574 /* test_win.tar */,
06393DF91F1A858000A647A0 /* Long names */,
06D345631F102E740057173F /* Formats */,
068B36781ED0AC050016269E /* full_test.tar */,
@@ -564,6 +729,10 @@
06BD0D1F1E3D0C630054AA5C /* ZIP */ = {
isa = PBXGroup;
children = (
+ 0623135F1F33B4280070A574 /* test_empty_cont.zip */,
+ 062313601F33B4280070A574 /* test_empty_dir.zip */,
+ 062313611F33B4280070A574 /* test_empty_file.zip */,
+ 062313621F33B4280070A574 /* test_win.zip */,
0685E6231F123F0D008655AA /* test_zip_bzip2.zip */,
069EBC361F0837B7008D5EF3 /* test_zip_lzma.zip */,
069F276F1EDA0D5E00736269 /* TestUnicode.zip */,
@@ -599,17 +768,15 @@
isa = PBXGroup;
children = (
06A3931F1DE06FFE00182E12 /* Common */,
- 061FCE251DBCC4BE0052F7BE /* Deflate.swift */,
- 06CDFCA71F111D9700292758 /* DeflateError.swift */,
- 06CDFC9D1F111D2600292758 /* DeflateCompression.swift */,
- 06FED40B1DD7717E0013DFB2 /* BZip2.swift */,
- 06CDFCA21F111D6C00292758 /* BZip2Error.swift */,
+ 06DD48A81F2D27CA00F45599 /* Deflate */,
+ 06DD48A91F2D27D200F45599 /* BZip2 */,
069D0FFE1E0D6CF200D8AA87 /* LZMA */,
061C063B1F0E8A9500832F0C /* XZ */,
061C06391F0E8A8300832F0C /* GZip */,
061C063A1F0E8A8B00832F0C /* Zlib */,
061C06461F0E8AEC00832F0C /* ZIP */,
061C06601F0E913700832F0C /* TAR */,
+ 064F72221F1E5B9C00017297 /* 7-Zip */,
06A3933D1DE070B500182E12 /* Service */,
);
path = Sources;
@@ -627,6 +794,7 @@
0680E1B01DDA2D7C005C05EB /* ZlibTests.swift */,
0675183C1E2A883600D16354 /* ZipTests.swift */,
0696E5C51ED0B22F00921D4D /* TarTests.swift */,
+ 064F72301F1E63E200017297 /* 7zTests.swift */,
061FCE2C1DBCC6A30052F7BE /* Constants.swift */,
06BE1AD81DB410F100EE0F59 /* Info.plist */,
);
@@ -636,13 +804,14 @@
06CC183D1DE35269003532F5 /* Test Files */ = {
isa = PBXGroup;
children = (
- 06D07AA21EB64EE800BC8C65 /* XZ */,
- 06D07A8F1EB64E7A00BC8C65 /* BZip2 */,
069DCE921EB64D0300ADC374 /* Answers */,
+ 06D07A8F1EB64E7A00BC8C65 /* BZip2 */,
069DCE7F1EB64B1500ADC374 /* GZip */,
069AC2161E02DE490041AC13 /* LZMA */,
+ 06D07AA21EB64EE800BC8C65 /* XZ */,
06BD0D1F1E3D0C630054AA5C /* ZIP */,
0691B93E1EBE3E100037EE58 /* TAR */,
+ 064F722D1F1E63D800017297 /* 7z */,
06CC185F1DE35269003532F5 /* test.zlib */,
06B374CA1E0EECD500064853 /* random_file.zlib */,
);
@@ -695,6 +864,25 @@
path = Formats;
sourceTree = "";
};
+ 06DD48A81F2D27CA00F45599 /* Deflate */ = {
+ isa = PBXGroup;
+ children = (
+ 061FCE251DBCC4BE0052F7BE /* Deflate.swift */,
+ 06CDFCA71F111D9700292758 /* DeflateError.swift */,
+ 06CDFC9D1F111D2600292758 /* DeflateCompression.swift */,
+ );
+ name = Deflate;
+ sourceTree = "";
+ };
+ 06DD48A91F2D27D200F45599 /* BZip2 */ = {
+ isa = PBXGroup;
+ children = (
+ 06FED40B1DD7717E0013DFB2 /* BZip2.swift */,
+ 06CDFCA21F111D6C00292758 /* BZip2Error.swift */,
+ );
+ name = BZip2;
+ sourceTree = "";
+ };
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
@@ -917,38 +1105,62 @@
files = (
069DCE9D1EB64D0300ADC374 /* test2.answer in Resources */,
06393DFD1F1A858000A647A0 /* long_test_gnu.tar in Resources */,
+ 0660C1321F3B3E6B002D42E4 /* test_7z_bzip2.7z in Resources */,
06D07AB01EB64EE800BC8C65 /* test5.xz in Resources */,
+ 0623135D1F33B41B0070A574 /* test_empty_file.tar in Resources */,
06BD0D241E3D0C630054AA5C /* TestDataDescriptor.zip in Resources */,
0691B9401EBE3E100037EE58 /* test.tar in Resources */,
+ 062313681F33B4510070A574 /* test_win.7z in Resources */,
+ 062313661F33B4280070A574 /* test_win.zip in Resources */,
+ 0693DF531F2E499F00602300 /* test_empty_file.7z in Resources */,
06D07A9E1EB64E7A00BC8C65 /* test6.bz2 in Resources */,
06D07A9C1EB64E7A00BC8C65 /* test4.bz2 in Resources */,
06D07AA01EB64E7A00BC8C65 /* test8.bz2 in Resources */,
069DCE8C1EB64B1500ADC374 /* test4.gz in Resources */,
+ 0693DF551F2E4AEE00602300 /* test_empty_cont.7z in Resources */,
06D07AB41EB64EE800BC8C65 /* test9.xz in Resources */,
06991C701E05A9F70030FF07 /* test9.lzma in Resources */,
06D3456A1F102E740057173F /* test_oldgnu.tar in Resources */,
06BD0D251E3D0C630054AA5C /* TestZip64.zip in Resources */,
+ 06DD48A71F2D24EF00F45599 /* SWCompressionSourceCode.7z in Resources */,
+ 066348D41F35E7F500F3DC7D /* test_all_timestamps.7z in Resources */,
+ 066348CF1F35E54700F3DC7D /* test_multi_blocks.7z in Resources */,
+ 0660C1331F3B3E6B002D42E4 /* test_7z_copy.7z in Resources */,
06393DFF1F1A858000A647A0 /* long_test_pax.tar in Resources */,
069DCE8D1EB64B1500ADC374 /* test5.gz in Resources */,
069DCE911EB64B1500ADC374 /* test9.gz in Resources */,
06D07AA11EB64E7A00BC8C65 /* test9.bz2 in Resources */,
0685E6241F123F0D008655AA /* test_zip_bzip2.zip in Resources */,
+ 066348D61F35E7F500F3DC7D /* test_encrypted_header.7z in Resources */,
06D07AB31EB64EE800BC8C65 /* test8.xz in Resources */,
+ 066348D51F35E7F500F3DC7D /* test_complicated_coding_scheme.7z in Resources */,
069DCEA11EB64D0300ADC374 /* test6.answer in Resources */,
06D3456C1F102E740057173F /* test_ustar.tar in Resources */,
06D07AAF1EB64EE800BC8C65 /* test4.xz in Resources */,
+ 066348CD1F35E32200F3DC7D /* test_anti_file.7z in Resources */,
063336B81F06F0B6009EC0A3 /* test_multi.xz in Resources */,
06D3456D1F102E740057173F /* test_v7.tar in Resources */,
+ 062313651F33B4280070A574 /* test_empty_file.zip in Resources */,
06D07AAC1EB64EE800BC8C65 /* test1.xz in Resources */,
06D345691F102E740057173F /* test_gnu.tar in Resources */,
+ 066348D71F35E7F500F3DC7D /* test_single_thread.7z in Resources */,
+ 061358FC1F274E080065BCEB /* test3.7z in Resources */,
06BD0D231E3D0C630054AA5C /* SWCompressionSourceCode.zip in Resources */,
06D07AB11EB64EE800BC8C65 /* test6.xz in Resources */,
+ 0693DF521F2E499F00602300 /* test_empty_dir.7z in Resources */,
+ 0623135C1F33B41B0070A574 /* test_empty_dir.tar in Resources */,
+ 061358FB1F274E080065BCEB /* test2.7z in Resources */,
06B374CB1E0EECD500064853 /* random_file.zlib in Resources */,
06393DFE1F1A858000A647A0 /* long_test_oldgnu.tar in Resources */,
+ 0623135E1F33B41B0070A574 /* test_win.tar in Resources */,
+ 0660C1341F3B3E6B002D42E4 /* test_7z_deflate.7z in Resources */,
069DCEA41EB64D0300ADC374 /* test9.answer in Resources */,
+ 062313631F33B4280070A574 /* test_empty_cont.zip in Resources */,
06D07AAD1EB64EE800BC8C65 /* test2.xz in Resources */,
0621E5181F0451C200C0003F /* test_multi.gz in Resources */,
069DCE9F1EB64D0300ADC374 /* test4.answer in Resources */,
+ 064F722F1F1E63D800017297 /* test1.7z in Resources */,
+ 0623135B1F33B41B0070A574 /* test_empty_cont.tar in Resources */,
069DCEA21EB64D0300ADC374 /* test7.answer in Resources */,
06D3456B1F102E740057173F /* test_pax.tar in Resources */,
06D07AB21EB64EE800BC8C65 /* test7.xz in Resources */,
@@ -956,6 +1168,7 @@
06D07A9F1EB64E7A00BC8C65 /* test7.bz2 in Resources */,
063336B71F06F0B6009EC0A3 /* test_multi_pad.xz in Resources */,
06991C711E05A9F70030FF07 /* test10.lzma in Resources */,
+ 062313641F33B4280070A574 /* test_empty_dir.zip in Resources */,
069DCEA01EB64D0300ADC374 /* test5.answer in Resources */,
069DCE8A1EB64B1500ADC374 /* test2.gz in Resources */,
069DCE901EB64B1500ADC374 /* test8.gz in Resources */,
@@ -992,13 +1205,18 @@
065569691DC65C2A00A47E66 /* ZlibArchive.swift in Sources */,
061C064E1F0E901C00832F0C /* ZipLocalHeader.swift in Sources */,
063DF10E1DE1F07800F38082 /* Extensions.swift in Sources */,
+ 06595E0F1F1E8252006501C2 /* 7zFolder.swift in Sources */,
063DF1141DE1F07800F38082 /* HuffmanTree.swift in Sources */,
+ 06595E141F1E90C2006501C2 /* 7zCoder.swift in Sources */,
06CDFCA91F111D9700292758 /* DeflateError.swift in Sources */,
069D0FF11E0D6CB600D8AA87 /* LZMARangeDecoder.swift in Sources */,
061C06491F0E8FF500832F0C /* ZipCentralDirectoryEntry.swift in Sources */,
063DF1171DE1F07800F38082 /* Protocols.swift in Sources */,
067518371E2A86F700D16354 /* ZipContainer.swift in Sources */,
+ 06A9605C1F1E7D990078E6D1 /* 7zHeader.swift in Sources */,
+ 064F72251F1E5D4400017297 /* 7zContainer.swift in Sources */,
061C06581F0E90C800832F0C /* TarError.swift in Sources */,
+ 06A960571F1E7D0B0078E6D1 /* 7zPackInfo.swift in Sources */,
061C06311F0E8A4900832F0C /* ZlibError.swift in Sources */,
069D0FFB1E0D6CE900D8AA87 /* LZMALenDecoder.swift in Sources */,
06E234831E06A6C200F18798 /* CheckSums.swift in Sources */,
@@ -1007,22 +1225,30 @@
0681B3DF1E44F674001A9D79 /* BitWriter.swift in Sources */,
061C063E1F0E8AB700832F0C /* ZipError.swift in Sources */,
069D0FE71E0D6C6400D8AA87 /* LZMADecoder.swift in Sources */,
+ 06A9606B1F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift in Sources */,
06FED40D1DD7717E0013DFB2 /* BZip2.swift in Sources */,
+ 06A960611F1E7DE20078E6D1 /* 7zFileInfo.swift in Sources */,
061C062C1F0E8A1D00832F0C /* GzipHeader.swift in Sources */,
069D0FF61E0D6CD000D8AA87 /* LZMABitTreeDecoder.swift in Sources */,
065569681DC65C2A00A47E66 /* GzipArchive.swift in Sources */,
061C06221F0E89D900832F0C /* XZError.swift in Sources */,
+ 06A960661F1E7DF60078E6D1 /* 7zCoderInfo.swift in Sources */,
06ADB2DA1EBCEFA60053A188 /* TarContainer.swift in Sources */,
06CDFCA41F111D6C00292758 /* BZip2Error.swift in Sources */,
06393DF61F1A7F8E00A647A0 /* ZipCommon.swift in Sources */,
+ 065D0ADD1F2B9D9100CE2DA8 /* 7zEntryInfo.swift in Sources */,
+ 06F276E01F2BAB4A00E67335 /* 7zEntry.swift in Sources */,
06E2346D1E068E9600F18798 /* XZArchive.swift in Sources */,
06CDFC9F1F111D2600292758 /* DeflateCompression.swift in Sources */,
061C06431F0E8AD500832F0C /* ZipEntry.swift in Sources */,
061C06361F0E8A5F00832F0C /* ZlibHeader.swift in Sources */,
+ 06A960521F1E7D040078E6D1 /* 7zStreamInfo.swift in Sources */,
06CDFCB31F111DEC00292758 /* LZMA2Error.swift in Sources */,
061C065D1F0E90E600832F0C /* TarEntry.swift in Sources */,
+ 064F722A1F1E638A00017297 /* 7zError.swift in Sources */,
06CDFCAE1F111DBE00292758 /* LZMAError.swift in Sources */,
063DF10B1DE1F07800F38082 /* DataWithPointer.swift in Sources */,
+ 06B689591F278815007C9316 /* 7zProperty.swift in Sources */,
061C06271F0E8A0300832F0C /* GzipError.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -1037,13 +1263,18 @@
063DF1191DE1F2E200F38082 /* DataWithPointer.swift in Sources */,
061C064F1F0E901C00832F0C /* ZipLocalHeader.swift in Sources */,
063DF11A1DE1F2E200F38082 /* Extensions.swift in Sources */,
+ 06595E101F1E8252006501C2 /* 7zFolder.swift in Sources */,
063DF11C1DE1F2E200F38082 /* HuffmanTree.swift in Sources */,
+ 06595E151F1E90C2006501C2 /* 7zCoder.swift in Sources */,
06CDFCAA1F111D9700292758 /* DeflateError.swift in Sources */,
069D0FF21E0D6CB600D8AA87 /* LZMARangeDecoder.swift in Sources */,
061C064A1F0E8FF500832F0C /* ZipCentralDirectoryEntry.swift in Sources */,
063DF11D1DE1F2E200F38082 /* Protocols.swift in Sources */,
067518381E2A86F700D16354 /* ZipContainer.swift in Sources */,
+ 06A9605D1F1E7D990078E6D1 /* 7zHeader.swift in Sources */,
+ 064F72261F1E5D4400017297 /* 7zContainer.swift in Sources */,
061C06591F0E90C800832F0C /* TarError.swift in Sources */,
+ 06A960581F1E7D0B0078E6D1 /* 7zPackInfo.swift in Sources */,
061C06321F0E8A4900832F0C /* ZlibError.swift in Sources */,
069D0FFC1E0D6CE900D8AA87 /* LZMALenDecoder.swift in Sources */,
06E234841E06A6C200F18798 /* CheckSums.swift in Sources */,
@@ -1052,22 +1283,30 @@
0681B3E01E44F674001A9D79 /* BitWriter.swift in Sources */,
061C063F1F0E8AB700832F0C /* ZipError.swift in Sources */,
069D0FE81E0D6C6400D8AA87 /* LZMADecoder.swift in Sources */,
+ 06A9606C1F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift in Sources */,
065569711DC65C2B00A47E66 /* Deflate.swift in Sources */,
+ 06A960621F1E7DE20078E6D1 /* 7zFileInfo.swift in Sources */,
061C062D1F0E8A1D00832F0C /* GzipHeader.swift in Sources */,
069D0FF71E0D6CD000D8AA87 /* LZMABitTreeDecoder.swift in Sources */,
06FED40E1DD7717E0013DFB2 /* BZip2.swift in Sources */,
061C06231F0E89D900832F0C /* XZError.swift in Sources */,
+ 06A960671F1E7DF60078E6D1 /* 7zCoderInfo.swift in Sources */,
06ADB2DB1EBCEFA60053A188 /* TarContainer.swift in Sources */,
06CDFCA51F111D6C00292758 /* BZip2Error.swift in Sources */,
06393DF71F1A7F8E00A647A0 /* ZipCommon.swift in Sources */,
+ 065D0ADE1F2B9D9100CE2DA8 /* 7zEntryInfo.swift in Sources */,
+ 06F276E11F2BAB4A00E67335 /* 7zEntry.swift in Sources */,
06E2346E1E068E9600F18798 /* XZArchive.swift in Sources */,
06CDFCA01F111D2600292758 /* DeflateCompression.swift in Sources */,
061C06441F0E8AD500832F0C /* ZipEntry.swift in Sources */,
061C06371F0E8A5F00832F0C /* ZlibHeader.swift in Sources */,
+ 06A960531F1E7D040078E6D1 /* 7zStreamInfo.swift in Sources */,
06CDFCB41F111DEC00292758 /* LZMA2Error.swift in Sources */,
061C065E1F0E90E600832F0C /* TarEntry.swift in Sources */,
+ 064F722B1F1E638A00017297 /* 7zError.swift in Sources */,
06CDFCAF1F111DBE00292758 /* LZMAError.swift in Sources */,
0655696F1DC65C2B00A47E66 /* GzipArchive.swift in Sources */,
+ 06B6895A1F278815007C9316 /* 7zProperty.swift in Sources */,
061C06281F0E8A0300832F0C /* GzipError.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -1082,13 +1321,18 @@
065569771DC65C2B00A47E66 /* ZlibArchive.swift in Sources */,
061C06501F0E901C00832F0C /* ZipLocalHeader.swift in Sources */,
063DF10F1DE1F07800F38082 /* Extensions.swift in Sources */,
+ 06595E111F1E8252006501C2 /* 7zFolder.swift in Sources */,
063DF1151DE1F07800F38082 /* HuffmanTree.swift in Sources */,
+ 06595E161F1E90C2006501C2 /* 7zCoder.swift in Sources */,
06CDFCAB1F111D9700292758 /* DeflateError.swift in Sources */,
069D0FF31E0D6CB600D8AA87 /* LZMARangeDecoder.swift in Sources */,
061C064B1F0E8FF500832F0C /* ZipCentralDirectoryEntry.swift in Sources */,
063DF1181DE1F07800F38082 /* Protocols.swift in Sources */,
067518391E2A86F700D16354 /* ZipContainer.swift in Sources */,
+ 06A9605E1F1E7D990078E6D1 /* 7zHeader.swift in Sources */,
+ 064F72271F1E5D4400017297 /* 7zContainer.swift in Sources */,
061C065A1F0E90C800832F0C /* TarError.swift in Sources */,
+ 06A960591F1E7D0B0078E6D1 /* 7zPackInfo.swift in Sources */,
061C06331F0E8A4900832F0C /* ZlibError.swift in Sources */,
069D0FFD1E0D6CE900D8AA87 /* LZMALenDecoder.swift in Sources */,
06E234851E06A6C200F18798 /* CheckSums.swift in Sources */,
@@ -1097,22 +1341,30 @@
0681B3E11E44F674001A9D79 /* BitWriter.swift in Sources */,
061C06401F0E8AB700832F0C /* ZipError.swift in Sources */,
069D0FE91E0D6C6400D8AA87 /* LZMADecoder.swift in Sources */,
+ 06A9606D1F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift in Sources */,
06FED40F1DD7717E0013DFB2 /* BZip2.swift in Sources */,
+ 06A960631F1E7DE20078E6D1 /* 7zFileInfo.swift in Sources */,
061C062E1F0E8A1D00832F0C /* GzipHeader.swift in Sources */,
069D0FF81E0D6CD000D8AA87 /* LZMABitTreeDecoder.swift in Sources */,
065569761DC65C2B00A47E66 /* GzipArchive.swift in Sources */,
061C06241F0E89D900832F0C /* XZError.swift in Sources */,
+ 06A960681F1E7DF60078E6D1 /* 7zCoderInfo.swift in Sources */,
06ADB2DC1EBCEFA60053A188 /* TarContainer.swift in Sources */,
06CDFCA61F111D6C00292758 /* BZip2Error.swift in Sources */,
06393DF81F1A7F8E00A647A0 /* ZipCommon.swift in Sources */,
+ 065D0ADF1F2B9D9100CE2DA8 /* 7zEntryInfo.swift in Sources */,
+ 06F276E21F2BAB4A00E67335 /* 7zEntry.swift in Sources */,
06E2346F1E068E9600F18798 /* XZArchive.swift in Sources */,
06CDFCA11F111D2600292758 /* DeflateCompression.swift in Sources */,
061C06451F0E8AD500832F0C /* ZipEntry.swift in Sources */,
061C06381F0E8A5F00832F0C /* ZlibHeader.swift in Sources */,
+ 06A960541F1E7D040078E6D1 /* 7zStreamInfo.swift in Sources */,
06CDFCB51F111DEC00292758 /* LZMA2Error.swift in Sources */,
061C065F1F0E90E600832F0C /* TarEntry.swift in Sources */,
+ 064F722C1F1E638A00017297 /* 7zError.swift in Sources */,
06CDFCB01F111DBE00292758 /* LZMAError.swift in Sources */,
063DF10C1DE1F07800F38082 /* DataWithPointer.swift in Sources */,
+ 06B6895B1F278815007C9316 /* 7zProperty.swift in Sources */,
061C06291F0E8A0300832F0C /* GzipError.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -1127,13 +1379,18 @@
06A393391DE0709300182E12 /* GzipArchive.swift in Sources */,
061C064D1F0E901C00832F0C /* ZipLocalHeader.swift in Sources */,
063DF10D1DE1F07800F38082 /* Extensions.swift in Sources */,
+ 06595E0E1F1E8252006501C2 /* 7zFolder.swift in Sources */,
063DF1131DE1F07800F38082 /* HuffmanTree.swift in Sources */,
+ 06595E131F1E90C2006501C2 /* 7zCoder.swift in Sources */,
06CDFCA81F111D9700292758 /* DeflateError.swift in Sources */,
069D0FF01E0D6CB600D8AA87 /* LZMARangeDecoder.swift in Sources */,
061C06481F0E8FF500832F0C /* ZipCentralDirectoryEntry.swift in Sources */,
063DF1161DE1F07800F38082 /* Protocols.swift in Sources */,
067518361E2A86F700D16354 /* ZipContainer.swift in Sources */,
+ 06A9605B1F1E7D990078E6D1 /* 7zHeader.swift in Sources */,
+ 064F72241F1E5D4400017297 /* 7zContainer.swift in Sources */,
061C06571F0E90C800832F0C /* TarError.swift in Sources */,
+ 06A960561F1E7D0B0078E6D1 /* 7zPackInfo.swift in Sources */,
061C06301F0E8A4900832F0C /* ZlibError.swift in Sources */,
069D0FFA1E0D6CE900D8AA87 /* LZMALenDecoder.swift in Sources */,
06E234821E06A6C200F18798 /* CheckSums.swift in Sources */,
@@ -1142,22 +1399,30 @@
0681B3DE1E44F674001A9D79 /* BitWriter.swift in Sources */,
061C063D1F0E8AB700832F0C /* ZipError.swift in Sources */,
069D0FE61E0D6C6400D8AA87 /* LZMADecoder.swift in Sources */,
+ 06A9606A1F1E7E0D0078E6D1 /* 7zSubstreamInfo.swift in Sources */,
06A3933B1DE0709300182E12 /* Deflate.swift in Sources */,
+ 06A960601F1E7DE20078E6D1 /* 7zFileInfo.swift in Sources */,
061C062B1F0E8A1D00832F0C /* GzipHeader.swift in Sources */,
069D0FF51E0D6CD000D8AA87 /* LZMABitTreeDecoder.swift in Sources */,
06A3933C1DE0709300182E12 /* BZip2.swift in Sources */,
061C06211F0E89D900832F0C /* XZError.swift in Sources */,
+ 06A960651F1E7DF60078E6D1 /* 7zCoderInfo.swift in Sources */,
06ADB2D91EBCEFA60053A188 /* TarContainer.swift in Sources */,
06CDFCA31F111D6C00292758 /* BZip2Error.swift in Sources */,
06393DF51F1A7F8E00A647A0 /* ZipCommon.swift in Sources */,
+ 065D0ADC1F2B9D9100CE2DA8 /* 7zEntryInfo.swift in Sources */,
+ 06F276DF1F2BAB4A00E67335 /* 7zEntry.swift in Sources */,
06E2346C1E068E9600F18798 /* XZArchive.swift in Sources */,
06CDFC9E1F111D2600292758 /* DeflateCompression.swift in Sources */,
061C06421F0E8AD500832F0C /* ZipEntry.swift in Sources */,
061C06351F0E8A5F00832F0C /* ZlibHeader.swift in Sources */,
+ 06A960511F1E7D040078E6D1 /* 7zStreamInfo.swift in Sources */,
06CDFCB21F111DEC00292758 /* LZMA2Error.swift in Sources */,
061C065C1F0E90E600832F0C /* TarEntry.swift in Sources */,
+ 064F72291F1E638A00017297 /* 7zError.swift in Sources */,
06CDFCAD1F111DBE00292758 /* LZMAError.swift in Sources */,
063DF10A1DE1F07800F38082 /* DataWithPointer.swift in Sources */,
+ 06B689581F278815007C9316 /* 7zProperty.swift in Sources */,
061C06261F0E8A0300832F0C /* GzipError.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -1166,6 +1431,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 064F72311F1E63E200017297 /* 7zTests.swift in Sources */,
0680E1B51DDA4076005C05EB /* Bzip2Tests.swift in Sources */,
06CC187F1DE35607003532F5 /* DeflateTests.swift in Sources */,
061FCE2D1DBCC6A30052F7BE /* Constants.swift in Sources */,
diff --git a/Sources/7zCoder.swift b/Sources/7zCoder.swift
new file mode 100644
index 00000000..27011372
--- /dev/null
+++ b/Sources/7zCoder.swift
@@ -0,0 +1,71 @@
+// Copyright (c) 2017 Timofey Solomko
+// Licensed under MIT License
+//
+// See LICENSE for license information
+
+import Foundation
+
+class SevenZipCoder {
+
+ /// Possible coder IDs.
+ struct ID {
+ static let copy: [UInt8] = [0x00]
+ /// Shouldn't be used, added for compatibility, `ID.copy` should be used instead.
+ static let zipCopy: [UInt8] = [0x04, 0x01, 0x00]
+ static let deflate: [UInt8] = [0x04, 0x01, 0x08]
+ /// Shouldn't be used, added for compatibility, `ID.bzip2` should be used instead.
+ static let zipBzip2: [UInt8] = [0x04, 0x01, 0x0C]
+ static let bzip2: [UInt8] = [0x04, 0x02, 0x02]
+ static let lzma2: [UInt8] = [0x21]
+ static let lzma: [UInt8] = [0x03, 0x01, 0x01]
+ }
+
+ let idSize: Int
+ let isComplex: Bool
+ let hasAttributes: Bool
+
+ let id: [UInt8]
+
+ let numInStreams: Int
+ let numOutStreams: Int
+
+ var propertiesSize: Int?
+ var properties: [UInt8]?
+
+ init(_ bitReader: BitReader) throws {
+ let flags = bitReader.byte()
+ guard flags & 0xC0 == 0
+ else { throw SevenZipError.internalStructureError }
+ idSize = (flags & 0x0F).toInt()
+ isComplex = flags & 0x10 != 0
+ hasAttributes = flags & 0x20 != 0
+
+ id = bitReader.bytes(count: idSize)
+
+ numInStreams = isComplex ? bitReader.szMbd() : 1
+ numOutStreams = isComplex ? bitReader.szMbd() : 1
+
+ if hasAttributes {
+ propertiesSize = bitReader.szMbd()
+ properties = bitReader.bytes(count: propertiesSize!)
+ }
+ }
+
+}
+
+extension SevenZipCoder: Equatable {
+
+ static func == (lhs: SevenZipCoder, rhs: SevenZipCoder) -> Bool {
+ let propertiesEqual: Bool
+ if lhs.properties == nil && rhs.properties == nil {
+ propertiesEqual = true
+ } else if lhs.properties != nil && rhs.properties != nil {
+ propertiesEqual = lhs.properties! == rhs.properties!
+ } else {
+ propertiesEqual = false
+ }
+ return lhs.id == rhs.id && lhs.numInStreams == rhs.numInStreams &&
+ lhs.numOutStreams == rhs.numOutStreams && propertiesEqual
+ }
+
+}
diff --git a/Sources/7zCoderInfo.swift b/Sources/7zCoderInfo.swift
new file mode 100644
index 00000000..27b59ee2
--- /dev/null
+++ b/Sources/7zCoderInfo.swift
@@ -0,0 +1,60 @@
+// Copyright (c) 2017 Timofey Solomko
+// Licensed under MIT License
+//
+// See LICENSE for license information
+
+import Foundation
+
+class SevenZipCoderInfo {
+
+ let numFolders: Int
+
+ let external: UInt8
+ private(set) var folders = [SevenZipFolder]()
+
+ init() {
+ numFolders = 0
+ external = 0
+ }
+
+ init(_ bitReader: BitReader) throws {
+ var type = bitReader.byte()
+ guard type == 0x0B else { throw SevenZipError.internalStructureError }
+
+ numFolders = bitReader.szMbd()
+ external = bitReader.byte()
+
+ guard external == 0
+ else { throw SevenZipError.externalNotSupported }
+
+ for _ in 0.. [ContainerEntry] {
+ var entries = [SevenZipEntry]()
+ guard let header = try readHeader(data)
+ else { return [] }
+
+ guard let files = header.fileInfo?.files
+ else { return [] }
+
+ /// Total count of non-empty files. Used to iterate over SubstreamInfo.
+ var nonEmptyFileIndex = 0
+
+ /// Index of currently opened folder in `streamInfo.coderInfo.folders`.
+ var folderIndex = 0
+
+ /// Index of currently extracted file in `headerInfo.fileInfo.files`.
+ var fileInFolderCount = 0
+
+ /// Index of currently read stream.
+ var streamIndex = -1
+
+ /// Total size of unpacked data for current folder. Used for consistency check.
+ var folderUnpackSize = 0
+
+ /// Combined calculated CRC of entire folder == all files in folder.
+ var folderCRC = CheckSums.crc32(Data())
+
+ /// `DataWithPointer` object with unpacked stream's data.
+ var rawFileData = DataWithPointer(data: Data())
+
+ let pointerData = DataWithPointer(data: data)
+
+ for fileIndex in 0..= folder.numUnpackSubstreams { // If we read all files in folder...
+ // We need to check folder's unpacked size as well as its CRC32 (if it is available).
+ guard folderUnpackSize == folder.unpackSize()
+ else { throw SevenZipError.wrongSize }
+ if let storedFolderCRC = folder.crc {
+ guard folderCRC == storedFolderCRC
+ else { throw SevenZipError.wrongCRC }
+ }
+ // Resetting folder's crc and unpack size.
+ folderCRC = CheckSums.crc32(Data())
+ folderUnpackSize = 0
+ // Resetting files count for the next folder.
+ fileInFolderCount = 0
+ // Moving to the next folder.
+ folderIndex += 1
+ }
+ } else {
+ info = SevenZipEntryInfo(file)
+ data = Data()
+ }
+
+ entries.append(SevenZipEntry(info, data))
+ }
+
+ return entries
+ }
+
+ /**
+ Processes ZIP container and returns an array of `SevenZipEntryInfo`,
+ which contain various information about container's entry.
+ This is performed without decompressing entries' data.
+
+ - Important: The order of entries is defined by 7-Zip container and,
+ particularly, by the creator of a given 7-Zip container.
+ It is likely that directories will be encountered earlier than files stored in those directories,
+ but one SHOULD NOT rely on any particular order.
+
+ - Parameter container: 7-Zip container's data.
+
+ - Throws: `SevenZipError` or any other error associated with compression type,
+ depending on the type of the problem.
+ It may indicate that either container is damaged or it might not be 7-Zip container at all.
+
+ - Returns: Array of `SevenZipEntryInfo`.
+ */
+ public static func info(container data: Data) throws -> [SevenZipEntryInfo] {
+ var entryInfos = [SevenZipEntryInfo]()
+ guard let header = try readHeader(data)
+ else { return [] }
+
+ guard let files = header.fileInfo?.files
+ else { return [] }
+
+ var nonEmptyFileIndex = 0
+ for file in files {
+ if !file.isEmptyStream, let substreamInfo = header.mainStreams?.substreamInfo {
+ entryInfos.append(SevenZipEntryInfo(file,
+ substreamInfo.unpackSizes[nonEmptyFileIndex],
+ substreamInfo.digests[nonEmptyFileIndex]))
+ nonEmptyFileIndex += 1
+ } else {
+ entryInfos.append(SevenZipEntryInfo(file))
+ }
+ }
+
+ return entryInfos
+ }
+
+ private static func readHeader(_ data: Data) throws -> SevenZipHeader? {
+ /// Object with input data which supports convenient work with bit shifts.
+ let bitReader = BitReader(data: data, bitOrder: .straight)
+
+ // **SignatureHeader**
+
+ // Check signature.
+ guard bitReader.bytes(count: 6) == [0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C]
+ else { throw SevenZipError.wrongSignature }
+
+ // Check archive version.
+ guard bitReader.bytes(count: 2) == [0, 4] // 7zFormat.txt says it should be [0, 2] instead.
+ else { throw SevenZipError.wrongFormatVersion }
+
+ let startHeaderCRC = bitReader.uint32()
+
+ /// - Note: Relative to SignatureHeader
+ let nextHeaderOffset = Int(bitReader.uint64())
+ let nextHeaderSize = Int(bitReader.uint64())
+ let nextHeaderCRC = bitReader.uint32()
+
+ bitReader.index = 12
+ guard CheckSums.crc32(bitReader.bytes(count: 20)) == startHeaderCRC
+ else { throw SevenZipError.wrongCRC }
+
+ // **Header**
+ bitReader.index += nextHeaderOffset
+ let headerStartIndex = bitReader.index
+ let headerEndIndex: Int
+
+ if bitReader.isAtTheEnd {
+ return nil // In case of completely empty container.
+ }
+
+ let type = bitReader.byte()
+ let header: SevenZipHeader
+
+ if type == 0x17 {
+ let packedHeaderStreamInfo = try SevenZipStreamInfo(bitReader)
+ headerEndIndex = bitReader.index
+ header = try SevenZipHeader(bitReader, using: packedHeaderStreamInfo)
+ } else if type == 0x01 {
+ header = try SevenZipHeader(bitReader)
+ headerEndIndex = bitReader.index
+ } else {
+ throw SevenZipError.internalStructureError
+ }
+
+ // Check header size
+ guard headerEndIndex - headerStartIndex == nextHeaderSize
+ else { throw SevenZipError.wrongSize }
+
+ // Check header CRC
+ bitReader.index = headerStartIndex
+ guard CheckSums.crc32(bitReader.bytes(count: nextHeaderSize)) == nextHeaderCRC
+ else { throw SevenZipError.wrongCRC }
+
+ return header
+ }
+
+}
+
+extension BitReader {
+
+ /// Abbreviation for "sevenZipMultiByteDecode".
+ func szMbd() -> Int {
+ self.align()
+ let firstByte = self.byte().toInt()
+ var mask = 0x80
+ var value = 0
+ for i in 0..<8 {
+ if firstByte & mask == 0 {
+ value |= ((firstByte & (mask &- 1)) << (8 * i))
+ break
+ }
+ value |= self.byte().toInt() << (8 * i)
+ mask >>= 1
+ }
+ return value
+ }
+
+ func defBits(count: Int) -> [UInt8] {
+ self.align()
+ let allDefined = self.byte()
+ let definedBits: [UInt8]
+ if allDefined == 0 {
+ definedBits = self.bits(count: count)
+ } else {
+ definedBits = Array(repeating: 1, count: count)
+ }
+ return definedBits
+ }
+
+}
diff --git a/Sources/7zEntry.swift b/Sources/7zEntry.swift
new file mode 100644
index 00000000..90edbad8
--- /dev/null
+++ b/Sources/7zEntry.swift
@@ -0,0 +1,147 @@
+// Copyright (c) 2017 Timofey Solomko
+// Licensed under MIT License
+//
+// See LICENSE for license information
+
+import Foundation
+
+/// Represents an entry in 7-Zip container.
+public class SevenZipEntry: ContainerEntry {
+
+ /// Various information about entry.
+ public let info: SevenZipEntryInfo
+
+ /// Entry's name.
+ public var name: String {
+ return info.name ?? ""
+ }
+
+ /// Entry's data size.
+ public var size: Int {
+ return info.size ?? 0
+ }
+
+ /// True, if entry is a directory.
+ public var isDirectory: Bool {
+ return info.isDirectory
+ }
+
+ /// True, if entry is a symbolic link.
+ public let isLink: Bool
+
+ /// Path to a linked file for symbolic link entry.
+ public let linkPath: String?
+
+ /**
+ Provides a dictionary with various attributes of the entry.
+ `FileAttributeKey` values are used as dictionary keys.
+
+ ## Possible attributes:
+
+ - `FileAttributeKey.posixPermissions`,
+ - `FileAttributeKey.size`,
+ - `FileAttributeKey.modificationDate`,
+ - `FileAttributeKey.creationDate`,
+ - `FileAttributeKey.type`,
+ - `FileAttributeKey.appendOnly`.
+
+ Most modern TAR containers are in UStar format.
+ */
+ public var entryAttributes: [FileAttributeKey: Any]
+
+ /**
+ True, if data for entry is available.
+ It might not be depending on the content of the container.
+ */
+ public let dataIsAvailable: Bool
+
+ private let dataObject: Data?
+
+ init(_ entryInfo: SevenZipEntryInfo, _ data: Data?) {
+ self.info = entryInfo
+ self.dataObject = data
+ self.dataIsAvailable = data != nil
+
+ var attributesDict = [FileAttributeKey: Any]()
+
+ if let mtime = entryInfo.modificationTime {
+ attributesDict[FileAttributeKey.modificationDate] = mtime
+ }
+
+ if let ctime = entryInfo.creationTime {
+ attributesDict[FileAttributeKey.creationDate] = ctime
+ }
+
+ if let size = entryInfo.size {
+ attributesDict[FileAttributeKey.size] = size
+ }
+
+ if let permissions = entryInfo.permissions {
+ attributesDict[FileAttributeKey.posixPermissions] = permissions.rawValue
+ }
+
+ if let unixType = entryInfo.unixType {
+ switch unixType {
+ case .characterSpecial:
+ attributesDict[FileAttributeKey.type] = FileAttributeType.typeCharacterSpecial
+ case .directory:
+ attributesDict[FileAttributeKey.type] = FileAttributeType.typeDirectory
+ case .blockSpecial:
+ attributesDict[FileAttributeKey.type] = FileAttributeType.typeBlockSpecial
+ case .regular:
+ attributesDict[FileAttributeKey.type] = FileAttributeType.typeRegular
+ case .symbolicLink:
+ attributesDict[FileAttributeKey.type] = FileAttributeType.typeSymbolicLink
+ case .socket:
+ attributesDict[FileAttributeKey.type] = FileAttributeType.typeSocket
+ default:
+ attributesDict[FileAttributeKey.type] = FileAttributeType.typeUnknown
+ }
+ }
+
+ if let dosAttrbutes = entryInfo.dosAttributes {
+ if dosAttrbutes.contains(.readOnly) {
+ attributesDict[FileAttributeKey.appendOnly] = true
+ }
+
+ if dosAttrbutes.contains(.directory) && attributesDict[FileAttributeKey.type] == nil {
+ attributesDict[FileAttributeKey.type] = FileAttributeType.typeDirectory
+ }
+ }
+
+ if entryInfo.isDirectory && attributesDict[FileAttributeKey.type] == nil {
+ attributesDict[FileAttributeKey.type] = FileAttributeType.typeDirectory
+ } else if attributesDict[FileAttributeKey.type] == nil {
+ // We still need some type for an entry.
+ attributesDict[FileAttributeKey.type] = FileAttributeType.typeRegular
+ }
+
+ if attributesDict[FileAttributeKey.type] as? FileAttributeType == FileAttributeType.typeSymbolicLink {
+ self.isLink = true
+ if let data = data {
+ self.linkPath = String(data: data, encoding: .utf8)
+ } else {
+ self.linkPath = nil
+ }
+ } else {
+ self.isLink = false
+ self.linkPath = nil
+ }
+
+ self.entryAttributes = attributesDict
+ }
+
+ /**
+ Returns data associated with this entry.
+
+ - Throws: `SevenZipError.dataIsUnavailable` if data for entry isn't available.
+ */
+ public func data() throws -> Data {
+ if let data = dataObject {
+ return data
+ } else {
+ throw SevenZipError.dataIsUnavailable
+ }
+ }
+
+}
diff --git a/Sources/7zEntryInfo.swift b/Sources/7zEntryInfo.swift
new file mode 100644
index 00000000..bbb606f8
--- /dev/null
+++ b/Sources/7zEntryInfo.swift
@@ -0,0 +1,183 @@
+// Copyright (c) 2017 Timofey Solomko
+// Licensed under MIT License
+//
+// See LICENSE for license information
+
+import Foundation
+
+/// Provides information about 7-Zip entry.
+public struct SevenZipEntryInfo {
+
+ /// Represents file access permissions in UNIX format.
+ public struct Permissions: OptionSet {
+
+ /// Raw bit flags value (in decimal).
+ public let rawValue: UInt32
+
+ /// Initializes permissions with bit flags in decimal.
+ public init(rawValue: UInt32) {
+ self.rawValue = rawValue
+ }
+
+ /// Set UID.
+ public static let setuid = Permissions(rawValue: 0o4000)
+
+ /// Set GID.
+ public static let setgid = Permissions(rawValue: 0o2000)
+
+ /// Sticky bit.
+ public static let sticky = Permissions(rawValue: 0o1000)
+
+ /// Owner can read.
+ public static let readOwner = Permissions(rawValue: 0o0400)
+
+ /// Owner can write.
+ public static let writeOwner = Permissions(rawValue: 0o0200)
+
+ /// Owner can execute.
+ public static let executeOwner = Permissions(rawValue: 0o0100)
+
+ /// Group can read.
+ public static let readGroup = Permissions(rawValue: 0o0040)
+
+ /// Group can write.
+ public static let writeGroup = Permissions(rawValue: 0o0020)
+
+ /// Group can execute.
+ public static let executeGroup = Permissions(rawValue: 0o0010)
+
+ /// Others can read.
+ public static let readOther = Permissions(rawValue: 0o0004)
+
+ /// Others can write.
+ public static let writeOther = Permissions(rawValue: 0o0002)
+
+ /// Others can execute.
+ public static let executeOther = Permissions(rawValue: 0o0001)
+
+ }
+
+ /// Represents file attributes in DOS format.
+ public struct DosAttributes: OptionSet {
+
+ /// Raw bit flags value.
+ public let rawValue: UInt32
+
+ /// Initializes attributes with bit flags.
+ public init(rawValue: UInt32) {
+ self.rawValue = rawValue
+ }
+
+ /// File is archive or archived.
+ public static let archive = DosAttributes(rawValue: 0b00100000)
+
+ /// File is a directory.
+ public static let directory = DosAttributes(rawValue: 0b00010000)
+
+ /// File is a volume.
+ public static let volume = DosAttributes(rawValue: 0b00001000)
+
+ /// File is a system file.
+ public static let system = DosAttributes(rawValue: 0b00000100)
+
+ /// File is hidden.
+ public static let hidden = DosAttributes(rawValue: 0b00000010)
+
+ /// File is read-only.
+ public static let readOnly = DosAttributes(rawValue: 0b00000001)
+
+ }
+
+ /// Represents file type in UNIX format.
+ public enum UnixType: UInt32 {
+ /// FIFO special file.
+ case fifo = 0o010000
+ /// Character special file.
+ case characterSpecial = 0o020000
+ /// Directory.
+ case directory = 0o040000
+ /// Block special file.
+ case blockSpecial = 0o060000
+ /// Regular file.
+ case regular = 0o100000
+ /// Symbolic link.
+ case symbolicLink = 0o120000
+ /// Socket.
+ case socket = 0o140000
+ }
+
+ /// Entry's name.
+ public let name: String?
+
+ /// Entry's data size.
+ public let size: Int?
+
+ /// True, if entry is a directory.
+ public let isDirectory: Bool
+
+ /// Entry's last access time and date.
+ public let accessTime: Date?
+
+ /// Entry's creation time and date.
+ public let creationTime: Date?
+
+ /// Entry's last modification time and date.
+ public let modificationTime: Date?
+
+ /// 7-Zip internal property which may contain UNIX permissions, type and/or DOS attributes.
+ public let winAttributes: UInt32?
+
+ /// Entry's UNIX file access permissions.
+ public let permissions: Permissions?
+
+ /// Entry's DOS attributes.
+ public let dosAttributes: DosAttributes?
+
+ /// Entry's UNIX file type.
+ public let unixType: UnixType?
+
+ /// 7-Zip internal propety. Indicates whether entry has a stream (data) inside container.
+ public let hasStream: Bool
+
+ /// True, if entry is an empty file. 7-Zip internal property.
+ public let isEmpty: Bool
+
+ /**
+ True if entry is an anti-file.
+ Used in differential backups to indicate that file should be deleted.
+ 7-Zip internal property.
+ */
+ public let isAnti: Bool
+
+ /// CRC32 of entry's data.
+ public let crc: UInt32?
+
+ init(_ file: SevenZipFileInfo.File, _ size: Int? = nil, _ crc: UInt32? = nil) {
+ self.hasStream = !file.isEmptyStream
+ self.isEmpty = file.isEmptyFile
+ self.isAnti = file.isAntiFile
+
+ self.name = file.name
+ self.isDirectory = file.isEmptyStream && !file.isEmptyFile
+
+ self.accessTime = Date(from: file.aTime)
+ self.creationTime = Date(from: file.cTime)
+ self.modificationTime = Date(from: file.mTime)
+
+ if let attributes = file.winAttributes {
+ self.winAttributes = attributes
+ self.permissions = Permissions(rawValue: (0x0FFF0000 & attributes) >> 16)
+ self.unixType = UnixType(rawValue: (0xF0000000 & attributes) >> 16)
+ self.dosAttributes = DosAttributes(rawValue: 0xFF & attributes)
+ } else {
+ self.winAttributes = nil
+ self.permissions = nil
+ self.unixType = nil
+ self.dosAttributes = nil
+ }
+
+ self.crc = crc
+ self.size = size
+ }
+
+}
diff --git a/Sources/7zError.swift b/Sources/7zError.swift
new file mode 100644
index 00000000..d7914309
--- /dev/null
+++ b/Sources/7zError.swift
@@ -0,0 +1,46 @@
+// Copyright (c) 2017 Timofey Solomko
+// Licensed under MIT License
+//
+// See LICENSE for license information
+
+import Foundation
+
+/**
+ Represents an error, which happened during processing 7-Zip container.
+ It may indicate that either container is damaged or it might not be 7-Zip container at all.
+ */
+public enum SevenZipError: Error {
+ /// Wrong container's signature.
+ case wrongSignature
+ /// Unsupporte version of container's format.
+ case wrongFormatVersion
+ /**
+ CRC either of one of the files from the container
+ or one of the container's strucutures is incorrect.
+ */
+ case wrongCRC
+ /**
+ Size either of one of the files from the container
+ or one of the container's strucutures is incorrect.
+ */
+ case wrongSize
+ /// Files have StartPos property. This feature isn't supported.
+ case startPosNotSupported
+ /// External feature isn't supported.
+ case externalNotSupported
+ /// Coders with multiple in and/or out streams aren't supported.
+ case multiStreamNotSupported
+ /// Additional streams feature isn't supported.
+ case additionalStreamsNotSupported
+ /// Entry is compressed using unsupported compression method.
+ case compressionNotSupported
+ /// Entry or container's header is encrypted. This feature isn't supported.
+ case encryptionNotSupported
+ /// Entry's data isn't available.
+ case dataIsUnavailable
+ /**
+ Unknown/incorrect internal 7-Zip structure was encountered or
+ no internal structure was found where it must be.
+ */
+ case internalStructureError
+}
diff --git a/Sources/7zFileInfo.swift b/Sources/7zFileInfo.swift
new file mode 100644
index 00000000..c996e687
--- /dev/null
+++ b/Sources/7zFileInfo.swift
@@ -0,0 +1,154 @@
+// Copyright (c) 2017 Timofey Solomko
+// Licensed under MIT License
+//
+// See LICENSE for license information
+
+import Foundation
+
+class SevenZipFileInfo {
+
+ struct File {
+ var isEmptyStream = false
+ var isEmptyFile = false
+ var isAntiFile = false
+ var name: String?
+ var cTime: UInt64?
+ var mTime: UInt64?
+ var aTime: UInt64?
+ var winAttributes: UInt32?
+ }
+
+ let numFiles: Int
+ var files = [File]()
+
+ var unknownProperties = [SevenZipProperty]()
+
+ init(_ bitReader: BitReader) throws {
+ numFiles = bitReader.szMbd()
+ for _ in 0..= propertySize
+ else { throw SevenZipError.internalStructureError }
+ bitReader.index += propertySize
+ default: // Unknown property
+ guard bitReader.size - bitReader.index >= propertySize
+ else { throw SevenZipError.internalStructureError }
+ unknownProperties.append(SevenZipProperty(propertyType, propertySize,
+ bitReader.bytes(count: propertySize)))
+ }
+ }
+
+ var emptyFileIndex = 0
+ for i in 0.. 0 {
+ for _ in 0..= numBindPairs else { throw SevenZipError.internalStructureError }
+
+ numPackedStreams = totalInputStreams - numBindPairs
+ if numPackedStreams == 1 {
+ var i = 0
+ while i < totalInputStreams {
+ if self.bindPairForInStream(i) < 0 {
+ break
+ }
+ i += 1
+ }
+ if i == totalInputStreams {
+ throw SevenZipError.internalStructureError
+ }
+ packedStreams.append(i)
+ } else {
+ for _ in 0.. [SevenZipCoder] {
+ var result = [SevenZipCoder]()
+ var current = 0
+ while current != -1 {
+ result.append(coders[current])
+ let pair = bindPairForOutStream(current)
+ current = pair != -1 ? bindPairs[pair].inIndex : -1
+ }
+ return result
+ }
+
+ func bindPairForInStream(_ index: Int) -> Int {
+ for i in 0.. Int {
+ for i in 0.. Int {
+ if totalOutputStreams == 0 {
+ return 0
+ }
+ for i in stride(from: totalOutputStreams - 1, through: 0, by: -1) {
+ if bindPairForOutStream(i) < 0 {
+ return unpackSizes[i]
+ }
+ }
+ return 0
+ }
+
+ func unpackSize(for coder: SevenZipCoder) -> Int {
+ for i in 0.. Data {
+ var decodedData = data
+ for coder in self.orderedCoders() {
+ guard coder.numInStreams == 1 || coder.numOutStreams == 1
+ else { throw SevenZipError.multiStreamNotSupported }
+
+ let unpackSize = self.unpackSize(for: coder)
+
+ if coder.id == SevenZipCoder.ID.copy || coder.id == SevenZipCoder.ID.zipCopy {
+ continue
+ } else if coder.id == SevenZipCoder.ID.deflate {
+ #if (!SWCOMPRESSION_POD_SEVENZIP) || (SWCOMPRESSION_POD_SEVENZIP && SWCOMPRESSION_POD_DEFLATE)
+ decodedData = try Deflate.decompress(data: decodedData)
+ #else
+ throw SevenZipError.compressionNotSupported
+ #endif
+ } else if coder.id == SevenZipCoder.ID.bzip2 || coder.id == SevenZipCoder.ID.zipBzip2 {
+ #if (!SWCOMPRESSION_POD_SEVENZIP) || (SWCOMPRESSION_POD_SEVENZIP && SWCOMPRESSION_POD_BZ2)
+ decodedData = try BZip2.decompress(data: decodedData)
+ #else
+ throw SevenZipError.compressionNotSupported
+ #endif
+ } else if coder.id == SevenZipCoder.ID.lzma2 {
+ // Dictionary size is stored in coder's properties.
+ guard let properties = coder.properties
+ else { throw LZMA2Error.wrongProperties }
+ guard properties.count == 1
+ else { throw LZMA2Error.wrongProperties }
+
+ let pointerData = DataWithPointer(data: decodedData)
+ decodedData = Data(bytes: try LZMA2.decompress(LZMA2.dictionarySize(properties[0]),
+ pointerData))
+ } else if coder.id == SevenZipCoder.ID.lzma {
+ // Both properties' byte (lp, lc, pb) and dictionary size are stored in coder's properties.
+ guard let properties = coder.properties
+ else { throw LZMAError.wrongProperties }
+ guard properties.count == 5
+ else { throw LZMAError.wrongProperties }
+
+ let pointerData = DataWithPointer(data: decodedData)
+ let lzmaDecoder = try LZMADecoder(pointerData)
+
+ var dictionarySize = 0
+ for i in 1..<4 {
+ dictionarySize |= properties[i].toInt() << (8 * (i - 1))
+ }
+
+ try lzmaDecoder.decodeLZMA(unpackSize, properties[0], dictionarySize)
+ decodedData = Data(bytes: lzmaDecoder.out)
+ } else {
+ if coder.id[0] == 0x06 {
+ throw SevenZipError.encryptionNotSupported
+ } else {
+ throw SevenZipError.compressionNotSupported
+ }
+ }
+
+ guard decodedData.count == unpackSize
+ else { throw SevenZipError.wrongSize }
+ }
+ return decodedData
+ }
+
+}
diff --git a/Sources/7zHeader.swift b/Sources/7zHeader.swift
new file mode 100644
index 00000000..3be7c58f
--- /dev/null
+++ b/Sources/7zHeader.swift
@@ -0,0 +1,67 @@
+// Copyright (c) 2017 Timofey Solomko
+// Licensed under MIT License
+//
+// See LICENSE for license information
+
+import Foundation
+
+class SevenZipHeader {
+
+ var archiveProperties: [SevenZipProperty]?
+ var additionalStreams: SevenZipStreamInfo?
+ var mainStreams: SevenZipStreamInfo?
+ var fileInfo: SevenZipFileInfo?
+
+ init(_ bitReader: BitReader) throws {
+ var type = bitReader.byte()
+
+ if type == 0x02 {
+ archiveProperties = try SevenZipProperty.getProperties(bitReader)
+ type = bitReader.byte()
+ }
+
+ if type == 0x03 {
+ throw SevenZipError.additionalStreamsNotSupported
+ }
+
+ if type == 0x04 {
+ mainStreams = try SevenZipStreamInfo(bitReader)
+ type = bitReader.byte()
+ }
+
+ if type == 0x05 {
+ fileInfo = try SevenZipFileInfo(bitReader)
+ type = bitReader.byte()
+ }
+
+ if type != 0x00 {
+ throw SevenZipError.internalStructureError
+ }
+ }
+
+ convenience init(_ bitReader: BitReader, using streamInfo: SevenZipStreamInfo) throws {
+ let folder = streamInfo.coderInfo.folders[0]
+ guard let packInfo = streamInfo.packInfo
+ else { throw SevenZipError.internalStructureError }
+
+ let folderOffset = SevenZipContainer.signatureHeaderSize + packInfo.packPosition
+ bitReader.index = folderOffset
+
+ let packedHeaderData = Data(bitReader.bytes(count: packInfo.packSizes[0]))
+ let headerData = try folder.unpack(data: packedHeaderData)
+
+ guard headerData.count == folder.unpackSize()
+ else { throw SevenZipError.wrongSize }
+ if let crc = folder.crc {
+ guard CheckSums.crc32(headerData) == crc
+ else { throw SevenZipError.wrongCRC }
+ }
+
+ let headerBitReader = BitReader(data: headerData, bitOrder: .straight)
+
+ guard headerBitReader.byte() == 0x01
+ else { throw SevenZipError.internalStructureError }
+ try self.init(headerBitReader)
+ }
+
+}
diff --git a/Sources/7zPackInfo.swift b/Sources/7zPackInfo.swift
new file mode 100644
index 00000000..acd1a25e
--- /dev/null
+++ b/Sources/7zPackInfo.swift
@@ -0,0 +1,48 @@
+// Copyright (c) 2017 Timofey Solomko
+// Licensed under MIT License
+//
+// See LICENSE for license information
+
+import Foundation
+
+class SevenZipPackInfo {
+
+ let packPosition: Int
+ let numPackStreams: Int
+ private(set) var packSizes = [Int]()
+ private(set) var digests = [UInt32?]()
+
+ init(_ bitReader: BitReader) throws {
+ packPosition = bitReader.szMbd()
+ numPackStreams = bitReader.szMbd()
+
+ var type = bitReader.byte()
+
+ if type == 0x09 {
+ for _ in 0.. [SevenZipProperty] {
+ var properties = [SevenZipProperty]()
+ while true {
+ let propertyType = bitReader.byte()
+ if propertyType == 0 {
+ break
+ }
+ let propertySize = bitReader.szMbd()
+ properties.append(SevenZipProperty(propertyType, propertySize, bitReader.bytes(count: propertySize)))
+ }
+ return properties
+ }
+
+}
diff --git a/Sources/7zStreamInfo.swift b/Sources/7zStreamInfo.swift
new file mode 100644
index 00000000..61828896
--- /dev/null
+++ b/Sources/7zStreamInfo.swift
@@ -0,0 +1,39 @@
+// Copyright (c) 2017 Timofey Solomko
+// Licensed under MIT License
+//
+// See LICENSE for license information
+
+import Foundation
+
+class SevenZipStreamInfo {
+
+ var packInfo: SevenZipPackInfo?
+ var coderInfo: SevenZipCoderInfo
+ var substreamInfo: SevenZipSubstreamInfo?
+
+ init(_ bitReader: BitReader) throws {
+ var type = bitReader.byte()
+
+ if type == 0x06 {
+ packInfo = try SevenZipPackInfo(bitReader)
+ type = bitReader.byte()
+ }
+
+ if type == 0x07 {
+ coderInfo = try SevenZipCoderInfo(bitReader)
+ type = bitReader.byte()
+ } else {
+ coderInfo = SevenZipCoderInfo()
+ }
+
+ if type == 0x08 {
+ substreamInfo = try SevenZipSubstreamInfo(bitReader, coderInfo)
+ type = bitReader.byte()
+ }
+
+ if type != 0x00 {
+ throw SevenZipError.internalStructureError
+ }
+ }
+
+}
diff --git a/Sources/7zSubstreamInfo.swift b/Sources/7zSubstreamInfo.swift
new file mode 100644
index 00000000..befb66f6
--- /dev/null
+++ b/Sources/7zSubstreamInfo.swift
@@ -0,0 +1,87 @@
+// Copyright (c) 2017 Timofey Solomko
+// Licensed under MIT License
+//
+// See LICENSE for license information
+
+import Foundation
+
+class SevenZipSubstreamInfo {
+
+ var numUnpackStreamsInFolders = [Int]()
+ var unpackSizes = [Int]()
+ var digests = [UInt32?]()
+
+ init(_ bitReader: BitReader, _ coderInfo: SevenZipCoderInfo) throws {
+ var totalUnpackStreams = coderInfo.folders.count
+
+ var type = bitReader.byte()
+
+ if type == 0x0D {
+ totalUnpackStreams = 0
+ for folder in coderInfo.folders {
+ let numStreams = bitReader.szMbd()
+ folder.numUnpackSubstreams = numStreams
+ totalUnpackStreams += numStreams
+ }
+ type = bitReader.byte()
+ }
+
+ for folder in coderInfo.folders {
+ if folder.numUnpackSubstreams == 0 {
+ continue
+ }
+ var sum = 0
+ if type == 0x09 {
+ for _ in 0..= 49 && blockSize <= 57 {
blockSize -= 48
} else {
diff --git a/Sources/BitReader.swift b/Sources/BitReader.swift
index 1b67bf8d..1a4cb847 100644
--- a/Sources/BitReader.swift
+++ b/Sources/BitReader.swift
@@ -15,6 +15,15 @@ class BitReader: DataWithPointer {
let bitOrder: BitOrder
private(set) var bitMask: UInt8
+ var isAligned: Bool {
+ switch self.bitOrder {
+ case .reversed:
+ return self.bitMask == 1
+ case .straight:
+ return self.bitMask == 128
+ }
+ }
+
convenience init(array: inout [UInt8], bitOrder: BitOrder) {
self.init(data: Data(bytes: array), bitOrder: bitOrder)
}
@@ -36,13 +45,15 @@ class BitReader: DataWithPointer {
}
var array: [UInt8] = Array(repeating: 0, count: count)
+ var byte = self.data[self.index]
for i in 0.. 0 ? 1 : 0
+ array[i] = byte & self.bitMask > 0 ? 1 : 0
switch self.bitOrder {
case .reversed:
if self.bitMask == 128 {
self.index += 1
+ byte = self.data[self.index]
self.bitMask = 1
} else {
self.bitMask <<= 1
@@ -50,6 +61,7 @@ class BitReader: DataWithPointer {
case .straight:
if self.bitMask == 1 {
self.index += 1
+ byte = self.data[self.index]
self.bitMask = 128
} else {
self.bitMask >>= 1
@@ -66,6 +78,7 @@ class BitReader: DataWithPointer {
}
var result = 0
+ var byte = self.data[self.index]
for i in 0.. 0 ? 1 : 0
+ let bit = byte & self.bitMask > 0 ? 1 : 0
result += (1 << power) * bit
switch self.bitOrder {
case .reversed:
if self.bitMask == 128 {
self.index += 1
+ byte = self.data[self.index]
self.bitMask = 1
} else {
self.bitMask <<= 1
@@ -89,6 +103,7 @@ class BitReader: DataWithPointer {
case .straight:
if self.bitMask == 1 {
self.index += 1
+ byte = self.data[self.index]
self.bitMask = 128
} else {
self.bitMask >>= 1
@@ -122,7 +137,7 @@ class BitReader: DataWithPointer {
return bit
}
- func skipUntilNextByte() {
+ func align() {
switch self.bitOrder {
case .reversed:
guard self.bitMask != 1 else {
@@ -139,27 +154,27 @@ class BitReader: DataWithPointer {
}
override func byte() -> UInt8 {
- self.skipUntilNextByte()
+ precondition(isAligned, "BitReader is not aligned.")
return super.byte()
}
override func bytes(count: Int) -> [UInt8] {
- self.skipUntilNextByte()
+ precondition(isAligned, "BitReader is not aligned.")
return super.bytes(count: count)
}
override func uint64(count: UInt64 = 8) -> UInt64 {
- self.skipUntilNextByte()
+ precondition(isAligned, "BitReader is not aligned.")
return super.uint64(count: count)
}
override func uint32(count: UInt32 = 4) -> UInt32 {
- self.skipUntilNextByte()
+ precondition(isAligned, "BitReader is not aligned.")
return super.uint32(count: count)
}
override func uint16(count: UInt16 = 2) -> UInt16 {
- self.skipUntilNextByte()
+ precondition(isAligned, "BitReader is not aligned.")
return super.uint16(count: count)
}
diff --git a/Sources/CheckSums.swift b/Sources/CheckSums.swift
index 5384eebb..8080b66d 100644
--- a/Sources/CheckSums.swift
+++ b/Sources/CheckSums.swift
@@ -18,8 +18,8 @@ struct CheckSums {
return ~crc
}
- static func crc32(_ data: Data) -> UInt32 {
- var crc: UInt32 = ~0
+ static func crc32(_ data: Data, prevValue: UInt32 = 0) -> UInt32 {
+ var crc = ~prevValue
for i in 0..> 8)
diff --git a/Sources/Deflate.swift b/Sources/Deflate.swift
index 6c021ea6..ecf8e152 100644
--- a/Sources/Deflate.swift
+++ b/Sources/Deflate.swift
@@ -69,21 +69,21 @@ public class Deflate: DecompressionAlgorithm {
/// Is this a last block?
let isLastBit = bitReader.bit()
/// Type of the current block.
- let blockType = [UInt8](bitReader.bits(count: 2).reversed())
+ let blockType = bitReader.intFromBits(count: 2)
- if blockType == [0, 0] { // Uncompressed block.
- bitReader.skipUntilNextByte()
+ if blockType == 0 { // Uncompressed block.
+ bitReader.align()
/// Length of the uncompressed data.
- let length = bitReader.intFromBits(count: 16)
+ let length = bitReader.uint16()
/// 1-complement of the length.
- let nlength = bitReader.intFromBits(count: 16)
+ let nlength = bitReader.uint16()
// Check if lengths are OK (nlength should be a 1-complement of length).
guard length & nlength == 0 else { throw DeflateError.wrongUncompressedBlockLengths }
// Process uncompressed data into the output
for _ in 0.. UInt32 {
var result: UInt32 = 0
for i: UInt32 in 0..<4 {
- let byte = ((self & (0xFF << (i * 8))) >> (i * 8))
+ let byte = (self & (0xFF << (i * 8))) >> (i * 8)
result += byte << (8 * (3 - i))
}
return result
@@ -67,3 +67,19 @@ extension Int {
}
}
+
+extension Date {
+
+ init?(from ntfsTime: UInt64?) {
+ if let time = ntfsTime,
+ let ntfsStartDate = DateComponents(calendar: Calendar(identifier: .iso8601),
+ timeZone: TimeZone(abbreviation: "UTC"),
+ year: 1601, month: 1, day: 1,
+ hour: 0, minute: 0, second: 0).date {
+ self.init(timeInterval: TimeInterval(time) / 10_000_000, since: ntfsStartDate)
+ } else {
+ return nil
+ }
+ }
+
+}
diff --git a/Sources/GzipArchive.swift b/Sources/GzipArchive.swift
index 50587a09..1d435d42 100644
--- a/Sources/GzipArchive.swift
+++ b/Sources/GzipArchive.swift
@@ -48,7 +48,7 @@ public class GzipArchive: Archive {
Multi-member GZip archives are essentially several GZip archives following each other in a single file.
- Note: `wrongCRC` error contains only last processed member's data as their associated value
- instead of all successfully processed members.
+ instead of all successfully processed members.
This is a known issue and it will be fixed in future major version
because solution requires backwards-incompatible API changes.
@@ -77,6 +77,8 @@ public class GzipArchive: Archive {
let memberData = Data(bytes: try Deflate.decompress(bitReader))
+ bitReader.align()
+
let crc32 = bitReader.uint32()
guard CheckSums.crc32(memberData) == crc32 else { throw GzipError.wrongCRC(memberData) }
@@ -90,7 +92,7 @@ public class GzipArchive: Archive {
Archives `data` into GZip archive, using various specified options.
Data will be also compressed with Deflate algorithm.
It will be also specified in archive's header that the compressor used the slowest Deflate algorithm.
-
+
If during compression something goes wrong `DeflateError` will be thrown.
If either `fileName` or `comment` cannot be encoded with ISO Latin-1 encoding,
then `GzipError.cannotEncodeISOLatin1` will be thrown.
diff --git a/Sources/LZMA.swift b/Sources/LZMA.swift
index 8c685d00..49b9c92c 100644
--- a/Sources/LZMA.swift
+++ b/Sources/LZMA.swift
@@ -27,14 +27,9 @@ public class LZMA: DecompressionAlgorithm {
return Data(bytes: try decompress(pointerData))
}
- /**
- - Parameter externalUncompressedSize: stream doesn't contain uncompressed size property,
- and decoder should use externally specified uncompressed size.
- Used in ZIP containers with LZMA compression.
- */
- static func decompress(_ pointerData: DataWithPointer, _ externalUncompressedSize: Int? = nil) throws -> [UInt8] {
+ static func decompress(_ pointerData: DataWithPointer) throws -> [UInt8] {
let lzmaDecoder = try LZMADecoder(pointerData)
- try lzmaDecoder.decodeLZMA(externalUncompressedSize)
+ try lzmaDecoder.decodeLZMA()
return lzmaDecoder.out
}
diff --git a/Sources/LZMADecoder.swift b/Sources/LZMADecoder.swift
index c171327b..2b7a4248 100644
--- a/Sources/LZMADecoder.swift
+++ b/Sources/LZMADecoder.swift
@@ -6,18 +6,18 @@
import Foundation
struct LZMAConstants {
- static let topValue: Int = 1 << 24
- static let numBitModelTotalBits: Int = 11
- static let numMoveBits: Int = 5
- static let probInitValue: Int = ((1 << numBitModelTotalBits) / 2)
- static let numPosBitsMax: Int = 4
- static let numStates: Int = 12
- static let numLenToPosStates: Int = 4
- static let numAlignBits: Int = 4
- static let startPosModelIndex: Int = 4
- static let endPosModelIndex: Int = 14
- static let numFullDistances: Int = (1 << (endPosModelIndex >> 1))
- static let matchMinLen: Int = 2
+ static let topValue = 1 << 24
+ static let numBitModelTotalBits = 11
+ static let numMoveBits = 5
+ static let probInitValue = (1 << numBitModelTotalBits) / 2
+ static let numPosBitsMax = 4
+ static let numStates = 12
+ static let numLenToPosStates = 4
+ static let numAlignBits = 4
+ static let startPosModelIndex = 4
+ static let endPosModelIndex = 14
+ static let numFullDistances = 1 << (endPosModelIndex >> 1)
+ static let matchMinLen = 2
// LZMAConstants.numStates << LZMAConstants.numPosBitsMax = 192
}
@@ -28,19 +28,19 @@ class LZMADecoder {
private var lc: UInt8 = 0
private var lp: UInt8 = 0
private var pb: UInt8 = 0
- private var dictionarySize: Int = 0
+ private var dictionarySize = 0
- private var rangeDecoder: LZMARangeDecoder = LZMARangeDecoder()
- private var posSlotDecoder: [LZMABitTreeDecoder] = []
- private var alignDecoder: LZMABitTreeDecoder
- private var lenDecoder: LZMALenDecoder
- private var repLenDecoder: LZMALenDecoder
+ private var rangeDecoder = LZMARangeDecoder()
+ private var posSlotDecoder = [LZMABitTreeDecoder]()
+ private var alignDecoder = LZMABitTreeDecoder(numBits: LZMAConstants.numAlignBits)
+ private var lenDecoder = LZMALenDecoder()
+ private var repLenDecoder = LZMALenDecoder()
/**
For literal decoding we need `1 << (lc + lp)` amount of tables.
Each table contains 0x300 probabilities.
*/
- private var literalProbs: [[Int]] = []
+ private var literalProbs = [[Int]]()
/**
Array with all probabilities:
@@ -52,35 +52,31 @@ class LZMADecoder {
- 229..<241: isRepG2
- 241..<433: isRep0Long
*/
- private var probabilities: [Int] = []
+ private var probabilities = [Int]()
- private var posDecoders: [Int] = []
+ private var posDecoders = [Int]()
// 'Distance history table'.
- private var rep0: Int = 0
- private var rep1: Int = 0
- private var rep2: Int = 0
- private var rep3: Int = 0
+ private var rep0 = 0
+ private var rep1 = 0
+ private var rep2 = 0
+ private var rep3 = 0
/// Is used to select exact variable from 'IsRep', 'IsRepG0', 'IsRepG1' and 'IsRepG2' arrays.
- private var state: Int = 0
+ private var state = 0
/// An array for storing output data.
- var out: [UInt8] = []
+ var out = [UInt8]()
// This array will also serve as dictionary and out window.
- private var dictStart: Int = 0
- private var dictEnd: Int = 0
+ private var dictStart = 0
+ private var dictEnd = 0
/// For proper processing of LZMA data `resetState` and `resetProperties` functions should be called at least once.
/// If that has happened, then stateReset is true.
- private var stateReset: Bool = false
+ private var stateReset = false
init(_ pointerData: DataWithPointer) throws {
self.pointerData = pointerData
- self.alignDecoder = LZMABitTreeDecoder(numBits: LZMAConstants.numAlignBits)
- // There are two types of matches so we need two decoders for them.
- self.lenDecoder = LZMALenDecoder()
- self.repLenDecoder = LZMALenDecoder()
}
// MARK: LZMA2 related functions.
@@ -90,18 +86,16 @@ class LZMADecoder {
self.dictStart = self.dictEnd
}
- private func resetProperties() throws {
- var properties = pointerData.byte()
+ private func resetProperties(_ properties: UInt8) throws {
if properties >= (9 * 5 * 5) {
throw LZMAError.wrongProperties
}
/// The number of literal context bits
self.lc = properties % 9
- properties /= 9
/// The number of pos bits
- self.pb = properties / 5
+ self.pb = (properties / 9) / 5
/// The number of literal pos bits
- self.lp = properties % 5
+ self.lp = (properties / 9) % 5
// We need to 'reset state' because several properties of Decoder depend on the values of lc, lp, pb.
self.resetState()
@@ -155,10 +149,10 @@ class LZMADecoder {
case 1:
self.resetState()
case 2:
- try self.resetProperties()
+ try self.resetProperties(pointerData.byte())
dataStartIndex += 1
case 3:
- try self.resetProperties()
+ try self.resetProperties(pointerData.byte())
dataStartIndex += 1
self.resetDictionary(dictSize)
default:
@@ -201,19 +195,19 @@ class LZMADecoder {
and decoder should use externally specified uncompressed size.
Used in ZIP containers with LZMA compression.
*/
- func decodeLZMA(_ externalUncompressedSize: Int? = nil) throws {
+ func decodeLZMA(_ externalUncompressedSize: Int? = nil, _ propertiesByte: UInt8? = nil, _ dSize: Int? = nil) throws {
// Firstly, we need to parse LZMA properties.
- try self.resetProperties()
- let dictSize = pointerData.uint32().toInt()
+ try self.resetProperties(propertiesByte ?? pointerData.byte())
+ let dictSize = dSize ?? pointerData.uint32().toInt()
dictionarySize = dictSize < (1 << 12) ? 1 << 12 : dictSize
/// Size of uncompressed data. -1 means it is unknown/undefined.
- var uncompressedSize = pointerData.uint64().toInt()
- uncompressedSize = Double(uncompressedSize) == pow(Double(2), Double(64)) - 1 ? -1 : uncompressedSize
-
+ var uncompressedSize: Int
if let extUncompSize = externalUncompressedSize {
- pointerData.index -= 8
uncompressedSize = extUncompSize
+ } else {
+ uncompressedSize = pointerData.uint64().toInt()
+ uncompressedSize = Double(uncompressedSize) == pow(Double(2), Double(64)) - 1 ? -1 : uncompressedSize
}
try decode(&uncompressedSize)
@@ -244,7 +238,9 @@ class LZMADecoder {
let posState = out.count & ((1 << pb.toInt()) - 1)
if rangeDecoder.decode(bitWithProb:
&probabilities[(state << LZMAConstants.numPosBitsMax) + posState]) == 0 {
- if uncompressedSize == 0 { throw LZMAError.exceededUncompressedSize }
+ if uncompressedSize == 0 {
+ throw LZMAError.exceededUncompressedSize
+ }
// DECODE LITERAL:
/// Previous literal (zero, if there was none).
@@ -299,8 +295,12 @@ class LZMADecoder {
var len: Int
if rangeDecoder.decode(bitWithProb: &probabilities[193 + state]) != 0 {
// REP MATCH CASE
- if uncompressedSize == 0 { throw LZMAError.exceededUncompressedSize }
- if dictEnd == 0 { throw LZMAError.windowIsEmpty }
+ if uncompressedSize == 0 {
+ throw LZMAError.exceededUncompressedSize
+ }
+ if dictEnd == 0 {
+ throw LZMAError.windowIsEmpty
+ }
if rangeDecoder.decode(bitWithProb: &probabilities[205 + state]) == 0 {
// (We use last distance from 'distance history table').
if rangeDecoder.decode(bitWithProb:
@@ -356,7 +356,7 @@ class LZMADecoder {
rep0 = posSlot
} else {
let numDirectBits = (posSlot >> 1) - 1
- var dist = ((2 | (posSlot & 1)) << numDirectBits)
+ var dist = (2 | (posSlot & 1)) << numDirectBits
if posSlot < LZMAConstants.endPosModelIndex {
// In this case we need a sequence of bits decoded with bit tree...
// ...(separate trees for different `posSlot` values)...
@@ -380,18 +380,23 @@ class LZMADecoder {
// Check if finish marker is encountered.
// Distance value of 2^32 is used to indicate 'End of Stream' marker.
if UInt32(rep0) == 0xFFFFFFFF {
- guard rangeDecoder.isFinishedOK else { throw LZMAError.rangeDecoderFinishError }
+ guard rangeDecoder.isFinishedOK
+ else { throw LZMAError.rangeDecoderFinishError }
break
}
- if uncompressedSize == 0 { throw LZMAError.exceededUncompressedSize }
+ if uncompressedSize == 0 {
+ throw LZMAError.exceededUncompressedSize
+ }
if rep0 >= dictionarySize || (rep0 > dictEnd && dictEnd < dictionarySize) {
throw LZMAError.notEnoughToRepeat
}
}
// Converting from zero-based length of the match to the real one.
len += LZMAConstants.matchMinLen
- if uncompressedSize > -1 && uncompressedSize < len { throw LZMAError.repeatWillExceed }
+ if uncompressedSize > -1 && uncompressedSize < len {
+ throw LZMAError.repeatWillExceed
+ }
for _ in 0..CFBundlePackageType
FMWK
CFBundleShortVersionString
- 3.2.0
+ 3.3.0
CFBundleVersion
$(CURRENT_PROJECT_VERSION)
NSHumanReadableCopyright
diff --git a/Sources/TarContainer.swift b/Sources/TarContainer.swift
index c757395b..711f6034 100644
--- a/Sources/TarContainer.swift
+++ b/Sources/TarContainer.swift
@@ -9,10 +9,10 @@ import Foundation
public class TarContainer: Container {
/**
- Processes TAR container and returns an array of `ContainerEntries` (which are actually `TarEntries`).
+ Processes TAR container and returns an array of `ContainerEntry` (which are actually `TarEntry`).
- Important: The order of entries is defined by TAR container and,
- particularly, by a creator of a given TAR container.
+ particularly, by the creator of a given TAR container.
It is likely that directories will be encountered earlier than files stored in those directories,
but one SHOULD NOT rely on any particular order.
diff --git a/Sources/TarEntry.swift b/Sources/TarEntry.swift
index cee66875..785c9d93 100644
--- a/Sources/TarEntry.swift
+++ b/Sources/TarEntry.swift
@@ -8,12 +8,7 @@ import Foundation
/// Represents either a file or directory entry in TAR container.
public class TarEntry: ContainerEntry {
- /**
- Represents a type of an entry.
-
- - Warning:
- Deprecated and will be removed in 4.0. `FileAttributeType` values will be used instead.
- */
+ /// Represents a type of an entry.
public enum EntryType: String {
/// Normal file.
case normal = "0"
@@ -44,7 +39,7 @@ public class TarEntry: ContainerEntry {
return (paxPath ?? gnuLongName) ?? ((fileNamePrefix ?? "") + (fileName ?? ""))
}
- /// True, if an entry is a directory.
+ /// True, if entry is a directory.
public var isDirectory: Bool {
return (type == .directory) || (type == .normal && size == 0 && name.characters.last == "/")
}
@@ -56,9 +51,6 @@ public class TarEntry: ContainerEntry {
Provides a dictionary with various attributes of the entry.
`FileAttributeKey` values are used as dictionary keys.
- - Note:
- Will be renamed in 4.0.
-
## Possible attributes:
- `FileAttributeKey.posixPermissions`,
@@ -77,57 +69,36 @@ public class TarEntry: ContainerEntry {
/**
File mode.
-
- - Warning:
- Deprecated and will be removed in 4.0. Use `entryAttributes` instead.
*/
public let mode: Int?
/**
Owner's ID.
-
- - Warning:
- Deprecated and will be removed in 4.0. Use `entryAttributes` instead.
*/
public private(set) var ownerID: Int?
/**
Owner's group ID.
-
- - Warning:
- Deprecated and will be removed in 4.0. Use `entryAttributes` instead.
*/
public private(set) var groupID: Int?
/**
The most recent modification time of the original file or directory.
-
- - Warning:
- Deprecated and will be removed in 4.0. Use `entryAttributes` instead.
*/
public private(set) var modificationTime: Date
/**
Type of entry.
-
- - Warning:
- Deprecated and will be removed in 4.0. Use `entryAttributes` instead.
*/
public let type: EntryType
/**
Owner's user name.
-
- - Warning:
- Deprecated and will be removed in 4.0. Use `entryAttributes` instead.
*/
public private(set) var ownerUserName: String?
/**
Owner's group name.
-
- - Warning:
- Deprecated and will be removed in 4.0. Use `entryAttributes` instead.
*/
public private(set) var ownerGroupName: String?
@@ -151,7 +122,10 @@ public class TarEntry: ContainerEntry {
/// Comment associated with the entry (PAX only).
public private(set) var comment: String?
- /// Path to a linked file.
+ /// True if entry is a symbolic link.
+ public let isLink: Bool
+
+ /// Path to a linked file for symbolic link entry.
public var linkPath: String? {
return (paxLinkPath ?? gnuLongLinkName) ?? linkedFileName
}
@@ -187,13 +161,15 @@ public class TarEntry: ContainerEntry {
var attributesDict = [FileAttributeKey: Any]()
let blockStartIndex = pointerData.index
+
// File name
fileName = try pointerData.nullEndedAsciiString(cutoff: 100)
// File mode
guard let octalPosixPermissions = Int(try pointerData.nullSpaceEndedAsciiString(cutoff: 8))
else { throw TarError.fieldIsNotNumber }
- let posixPermissions = octalPosixPermissions.octalToDecimal()
+ // Sometime file mode also contains unix type, so we need to filter it out.
+ let posixPermissions = octalPosixPermissions.octalToDecimal() & 0xFFF
attributesDict[FileAttributeKey.posixPermissions] = posixPermissions
mode = posixPermissions
@@ -355,6 +331,7 @@ public class TarEntry: ContainerEntry {
}
self.entryAttributes = attributesDict
+ self.isLink = attributesDict[FileAttributeKey.type] as? FileAttributeType == FileAttributeType.typeSymbolicLink
// File data
pointerData.index = blockStartIndex + 512
@@ -363,7 +340,7 @@ public class TarEntry: ContainerEntry {
pointerData.index += size.roundTo512()
}
- private static func parseHeader(_ header: String?, _ fieldsDict: inout [String : String]) throws {
+ private static func parseHeader(_ header: String?, _ fieldsDict: inout [String: String]) throws {
if let headerString = header {
let headerEntries = headerString.components(separatedBy: "\n")
for headerEntry in headerEntries {
diff --git a/Sources/XZArchive.swift b/Sources/XZArchive.swift
index 17b0363d..08124617 100644
--- a/Sources/XZArchive.swift
+++ b/Sources/XZArchive.swift
@@ -78,7 +78,7 @@ public class XZArchive: Archive {
let pointerData = DataWithPointer(data: data)
// Note: for multi-stream archives we don't check footer's magic bytes,
- // because it is impossible to determine the end of each stream
+ // because it is impossible to determine the end of each stream
// without processing them, and checking last stream's footer doesn't
// guarantee correctness of other streams.
@@ -125,7 +125,7 @@ public class XZArchive: Archive {
var blockInfos: [(unpaddedSize: Int, uncompSize: Int)] = []
var indexSize = -1
while true {
- let blockHeaderSize = pointerData.byte()
+ let blockHeaderSize = pointerData.byte().toInt()
if blockHeaderSize == 0 {
indexSize = try processIndex(blockInfos, pointerData)
break
@@ -162,7 +162,7 @@ public class XZArchive: Archive {
return Data(bytes: out)
}
- private static func processStreamHeader(_ pointerData: DataWithPointer) throws -> (checkType: UInt8, flagsCRC: UInt32) {
+ private static func processStreamHeader(_ pointerData: DataWithPointer) throws -> (checkType: Int, flagsCRC: UInt32) {
// Check magic number.
guard pointerData.bytes(count: 6) == [0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00]
else { throw XZError.wrongMagic }
@@ -180,7 +180,7 @@ public class XZArchive: Archive {
else { throw XZError.fieldReservedValue }
// Four bits of second flags byte indicate type of redundancy check.
- let checkType = flagsBytes[1] & 0x0F
+ let checkType = flagsBytes[1].toInt() & 0xF
switch checkType {
case 0x00, 0x01, 0x04, 0x0A:
break
@@ -191,92 +191,72 @@ public class XZArchive: Archive {
return (checkType, flagsCRC)
}
- private static func processBlock(_ blockHeaderSize: UInt8,
+ private static func processBlock(_ blockHeaderSize: Int,
_ pointerData: DataWithPointer) throws -> (blockData: [UInt8], unpaddedSize: Int, uncompressedSize: Int) {
- var blockBytes: [UInt8] = []
let blockHeaderStartIndex = pointerData.index - 1
- blockBytes.append(blockHeaderSize)
guard blockHeaderSize >= 0x01 && blockHeaderSize <= 0xFF
else { throw XZError.wrongFieldValue }
let realBlockHeaderSize = (blockHeaderSize + 1) * 4
let blockFlags = pointerData.byte()
- blockBytes.append(blockFlags)
/**
Bit values 00, 01, 10, 11 indicate filters number from 1 to 4,
so we actually need to add 1 to get filters' number.
*/
- let numberOfFilters = blockFlags & 0x03 + 1
+ let filtersCount = blockFlags & 0x03 + 1
guard blockFlags & 0x3C == 0
else { throw XZError.fieldReservedValue }
/// Should match size of compressed data.
- var compressedSize = -1
- if blockFlags & 0x40 != 0 {
- let compressedSizeDecodeResult = try pointerData.multiByteDecode()
- compressedSize = compressedSizeDecodeResult.multiByteInteger
- guard compressedSize > 0
- else { throw XZError.wrongFieldValue }
- blockBytes.append(contentsOf: compressedSizeDecodeResult.bytesProcessed)
- }
+ let compressedSize = blockFlags & 0x40 != 0 ? try pointerData.multiByteDecode() : -1
/// Should match the size of data after decompression.
- var uncompressedSize = -1
- if blockFlags & 0x80 != 0 {
- let uncompressedSizeDecodeResult = try pointerData.multiByteDecode()
- uncompressedSize = uncompressedSizeDecodeResult.multiByteInteger
- guard uncompressedSize > 0
- else { throw XZError.wrongFieldValue }
- blockBytes.append(contentsOf: uncompressedSizeDecodeResult.bytesProcessed)
- }
+ let uncompressedSize = blockFlags & 0x80 != 0 ? try pointerData.multiByteDecode() : -1
var filters: [(DataWithPointer) throws -> [UInt8]] = []
- for _ in 0.. [UInt8] in
try LZMA2.decompress(LZMA2.dictionarySize(filterPropeties), dwp)
}
filters.append(closure)
- default:
+ } else {
throw XZError.wrongFilterID
}
}
// We need to take into account 4 bytes for CRC32 so thats why "-4".
- while pointerData.index - blockHeaderStartIndex < realBlockHeaderSize.toInt() - 4 {
+ while pointerData.index - blockHeaderStartIndex < realBlockHeaderSize - 4 {
let byte = pointerData.byte()
guard byte == 0x00
else { throw XZError.wrongPadding }
- blockBytes.append(byte)
}
let blockHeaderCRC = pointerData.uint32()
- guard CheckSums.crc32(blockBytes) == blockHeaderCRC
+ pointerData.index = blockHeaderStartIndex
+ guard CheckSums.crc32(pointerData.bytes(count: realBlockHeaderSize - 4)) == blockHeaderCRC
else { throw XZError.wrongInfoCRC }
+ pointerData.index += 4
var intResult = pointerData
let compressedDataStart = pointerData.index
- for filterIndex in 0.. Int {
- var indexBytes: [UInt8] = [0x00]
- let numberOfRecordsTuple = try pointerData.multiByteDecode()
- indexBytes.append(contentsOf: numberOfRecordsTuple.bytesProcessed)
- let numberOfRecords = numberOfRecordsTuple.multiByteInteger
- guard numberOfRecords == blockInfos.count
+ let indexStartIndex = pointerData.index - 1
+ let recordsCount = try pointerData.multiByteDecode()
+ guard recordsCount == blockInfos.count
else { throw XZError.wrongFieldValue }
- for blockInfo in blockInfos {
- let unpaddedSizeTuple = try pointerData.multiByteDecode()
- guard unpaddedSizeTuple.multiByteInteger == blockInfo.unpaddedSize
- else { throw XZError.wrongFieldValue }
- indexBytes.append(contentsOf: unpaddedSizeTuple.bytesProcessed)
- let uncompSizeTuple = try pointerData.multiByteDecode()
- guard uncompSizeTuple.multiByteInteger == blockInfo.uncompSize
+ for blockInfo in blockInfos {
+ let unpaddedSize = try pointerData.multiByteDecode()
+ guard unpaddedSize == blockInfo.unpaddedSize
+ else { throw XZError.wrongFieldValue }
+
+ let uncompSize = try pointerData.multiByteDecode()
+ guard uncompSize == blockInfo.uncompSize
else { throw XZError.wrongDataSize }
- indexBytes.append(contentsOf: uncompSizeTuple.bytesProcessed)
}
- if indexBytes.count % 4 != 0 {
- let paddingSize = 4 - indexBytes.count % 4
+ var indexSize = pointerData.index - indexStartIndex
+ if indexSize % 4 != 0 {
+ let paddingSize = 4 - indexSize % 4
for _ in 0..> 8 == streamHeader.checkType
else { throw XZError.wrongFieldValue }
- guard footerStreamFlags[1] & 0xF0 == 0
+ guard streamFooterFlags & 0xF000 == 0
else { throw XZError.fieldReservedValue }
// Check footer's magic number
@@ -366,12 +342,11 @@ public class XZArchive: Archive {
fileprivate extension DataWithPointer {
- fileprivate func multiByteDecode() throws -> (multiByteInteger: Int, bytesProcessed: [UInt8]) {
+ fileprivate func multiByteDecode() throws -> Int {
var i = 1
var result = self.byte().toInt()
- var bytes: [UInt8] = [result.toUInt8()]
if result <= 127 {
- return (result, bytes)
+ return result
}
result &= 0x7F
while self.previousByte & 0x80 != 0 {
@@ -379,11 +354,10 @@ fileprivate extension DataWithPointer {
if i >= 9 || byte == 0x00 {
throw XZError.multiByteIntegerError
}
- bytes.append(byte)
result += (byte.toInt() & 0x7F) << (7 * i)
i += 1
}
- return (result, bytes)
+ return result
}
}
diff --git a/Sources/ZipCentralDirectoryEntry.swift b/Sources/ZipCentralDirectoryEntry.swift
index 456cd062..7cedcab6 100644
--- a/Sources/ZipCentralDirectoryEntry.swift
+++ b/Sources/ZipCentralDirectoryEntry.swift
@@ -29,6 +29,10 @@ struct ZipCentralDirectoryEntry {
private(set) var modificationTimestamp: UInt32?
+ private(set) var ntfsMtime: UInt64?
+ private(set) var ntfsAtime: UInt64?
+ private(set) var ntfsCtime: UInt64?
+
init(_ pointerData: DataWithPointer, _ currentDiskNumber: UInt32) throws {
// Check signature.
guard pointerData.uint32() == 0x02014b50
@@ -90,6 +94,21 @@ struct ZipCentralDirectoryEntry {
if flags & 0x01 != 0 {
self.modificationTimestamp = pointerData.uint32()
}
+ case 0x000a: // NTFS Extra Fields
+ let ntfsExtraFieldsStartIndex = pointerData.index
+ pointerData.index += 4 // Skipping reserved bytes.
+ while pointerData.index - ntfsExtraFieldsStartIndex < size {
+ let tag = pointerData.uint16()
+ pointerData.index += 2 // Skipping size of attributes for this tag.
+ switch tag {
+ case 0x0001:
+ self.ntfsMtime = pointerData.uint64()
+ self.ntfsAtime = pointerData.uint64()
+ self.ntfsCtime = pointerData.uint64()
+ default:
+ break
+ }
+ }
default:
pointerData.index += size
}
diff --git a/Sources/ZipCommon.swift b/Sources/ZipCommon.swift
index 6a6ce0ee..0a8b986c 100644
--- a/Sources/ZipCommon.swift
+++ b/Sources/ZipCommon.swift
@@ -20,8 +20,11 @@ class ZipCommon {
#endif
static func getStringField(_ pointerData: DataWithPointer, _ length: Int, _ useUtf8: Bool) -> String? {
+ if length == 0 {
+ return ""
+ }
let bytes = pointerData.bytes(count: length)
- let bytesAreUtf8 = ZipCommon.isUtf8(bytes)
+ let bytesAreUtf8 = ZipCommon.needsUtf8(bytes)
if !useUtf8 && ZipCommon.cp437Available && !bytesAreUtf8 {
return String(data: Data(bytes: bytes), encoding: String.Encoding(rawValue:
CFStringConvertEncodingToNSStringEncoding(ZipCommon.cp437Encoding)))
@@ -30,17 +33,25 @@ class ZipCommon {
}
}
- static func isUtf8(_ bytes: [UInt8]) -> Bool {
+ static func needsUtf8(_ bytes: [UInt8]) -> Bool {
+ // UTF-8 can have BOM.
+ if bytes.count >= 3 {
+ if bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF {
+ return true
+ }
+ }
var codeLength = 0
var index = 0
var ch: UInt32 = 0
while index < bytes.count {
let byte = bytes[index]
- if byte <= 0x7F {
+ if byte <= 0x7F { // This simple bytes can both exist in CP437 and UTF-8.
index += 1
continue
}
+ // Otherwise, it has to be correct code sequence in case of UTF-8.
+ // If code sequence is incorrect, then it is CP437.
if byte >= 0xC2 && byte <= 0xDF {
codeLength = 2
} else if byte >= 0xE0 && byte <= 0xEF {
@@ -54,10 +65,8 @@ class ZipCommon {
return false
}
- for i in 1.. Data {
// Now, let's move to the location of local header.
+ let pointerData = DataWithPointer(data: self.containerData)
pointerData.index = Int(UInt32(truncatingBitPattern: self.cdEntry.offset))
if localHeader == nil {
@@ -112,23 +120,25 @@ public class ZipEntry: ContainerEntry {
fileBytes = try Deflate.decompress(bitReader)
// Sometimes pointerData stays in not-aligned state after deflate decompression.
// Following line ensures that this is not the case.
- bitReader.skipUntilNextByte()
+ bitReader.align()
pointerData.index = bitReader.index
case 12:
- #if (!SWCOMP_ZIP_POD_BUILD) || (SWCOMP_ZIP_POD_BUILD && SWCOMP_ZIP_POD_BZ2)
+ #if (!SWCOMPRESSION_POD_ZIP) || (SWCOMPRESSION_POD_ZIP && SWCOMPRESSION_POD_BZ2)
// BZip2 algorithm considers bits in a byte in a different order.
let bitReader = BitReader(data: pointerData.data, bitOrder: .straight)
bitReader.index = pointerData.index
fileBytes = try BZip2.decompress(bitReader)
- bitReader.skipUntilNextByte()
+ bitReader.align()
pointerData.index = bitReader.index
#else
throw ZipError.compressionNotSupported
#endif
case 14:
- #if (!SWCOMP_ZIP_POD_BUILD) || (SWCOMP_ZIP_POD_BUILD && SWCOMP_ZIP_POD_LZMA)
+ #if (!SWCOMPRESSION_POD_ZIP) || (SWCOMPRESSION_POD_ZIP && SWCOMPRESSION_POD_LZMA)
pointerData.index += 4 // Skipping LZMA SDK version and size of properties.
- fileBytes = try LZMA.decompress(pointerData, uncompSize)
+ let lzmaDecoder = try LZMADecoder(pointerData)
+ try lzmaDecoder.decodeLZMA(uncompSize)
+ fileBytes = lzmaDecoder.out
#else
throw ZipError.compressionNotSupported
#endif
@@ -161,7 +171,7 @@ public class ZipEntry: ContainerEntry {
init(_ cdEntry: ZipCentralDirectoryEntry, _ pointerData: DataWithPointer) {
self.cdEntry = cdEntry
- self.pointerData = pointerData
+ self.containerData = pointerData.data
var attributesDict = [FileAttributeKey: Any]()
@@ -190,6 +200,14 @@ public class ZipEntry: ContainerEntry {
attributesDict[FileAttributeKey.modificationDate] = Date(timeIntervalSince1970: TimeInterval(mtimestamp))
}
+ // NTFS Extra Fields
+ if let mtime = Date(from: cdEntry.ntfsMtime) {
+ attributesDict[FileAttributeKey.modificationDate] = mtime
+ }
+ if let ctime = Date(from: cdEntry.ntfsCtime) {
+ attributesDict[FileAttributeKey.creationDate] = ctime
+ }
+
// Size
attributesDict[FileAttributeKey.size] = cdEntry.uncompSize
@@ -238,6 +256,7 @@ public class ZipEntry: ContainerEntry {
}
self.entryAttributes = attributesDict
+ self.isLink = attributesDict[FileAttributeKey.type] as? FileAttributeType == FileAttributeType.typeSymbolicLink
}
}
diff --git a/Sources/ZipLocalHeader.swift b/Sources/ZipLocalHeader.swift
index 40edd0e7..39d028ea 100644
--- a/Sources/ZipLocalHeader.swift
+++ b/Sources/ZipLocalHeader.swift
@@ -25,6 +25,10 @@ struct ZipLocalHeader {
private(set) var accessTimestamp: UInt32?
private(set) var creationTimestamp: UInt32?
+ private(set) var ntfsMtime: UInt64?
+ private(set) var ntfsAtime: UInt64?
+ private(set) var ntfsCtime: UInt64?
+
let headerSize: Int
init(_ pointerData: DataWithPointer) throws {
@@ -79,6 +83,21 @@ struct ZipLocalHeader {
if flags & 0x04 != 0 {
self.creationTimestamp = pointerData.uint32()
}
+ case 0x000a: // NTFS Extra Fields
+ let ntfsExtraFieldsStartIndex = pointerData.index
+ pointerData.index += 4 // Skipping reserved bytes.
+ while pointerData.index - ntfsExtraFieldsStartIndex < size {
+ let tag = pointerData.uint16()
+ pointerData.index += 2 // Skipping size of attributes for this tag.
+ switch tag {
+ case 0x0001:
+ self.ntfsMtime = pointerData.uint64()
+ self.ntfsAtime = pointerData.uint64()
+ self.ntfsCtime = pointerData.uint64()
+ default:
+ break
+ }
+ }
default:
pointerData.index += size
}
diff --git a/Sources/ZlibArchive.swift b/Sources/ZlibArchive.swift
index 0310a7b2..0b9a7dd6 100644
--- a/Sources/ZlibArchive.swift
+++ b/Sources/ZlibArchive.swift
@@ -14,7 +14,7 @@ public class ZlibArchive: Archive {
If data passed is not actually a Zlib archive, `ZlibError` will be thrown.
If data in archive is not actually compressed with Deflate algorithm, `DeflateError` will be thrown.
-
+
- Note: This function is specification compliant.
- Parameter archive: Data archived with Zlib.
@@ -40,7 +40,7 @@ public class ZlibArchive: Archive {
}
/**
- Archives `data` into Zlib archive.
+ Archives `data` into Zlib archive.
Data will be also compressed with Deflate algorithm.
It will also be specified in archive's header that the compressor used the slowest Deflate algorithm.
diff --git a/Sources/ZlibHeader.swift b/Sources/ZlibHeader.swift
index 3974d4e4..6aa3bfd1 100644
--- a/Sources/ZlibHeader.swift
+++ b/Sources/ZlibHeader.swift
@@ -51,38 +51,37 @@ public struct ZlibHeader {
}
init(_ bitReader: BitReader) throws {
+ // compressionMethod and compressionInfo combined are needed later for integrity check.
+ let cmf = bitReader.byte()
// First four bits are compression method.
// Only compression method = 8 (DEFLATE) is supported.
- let compressionMethod = bitReader.intFromBits(count: 4)
+ let compressionMethod = cmf & 0xF
guard compressionMethod == 8 else { throw ZlibError.wrongCompressionMethod }
self.compressionMethod = .deflate
// Remaining four bits indicate window size.
// For Deflate it must not be more than 7.
- let compressionInfo = bitReader.intFromBits(count: 4)
+ let compressionInfo = (cmf & 0xF0) >> 4
guard compressionInfo <= 7 else { throw ZlibError.wrongCompressionInfo }
- let windowSize = 1 << (compressionInfo + 8)
+ let windowSize = 1 << (compressionInfo.toInt() + 8)
self.windowSize = windowSize
- // compressionMethod and compressionInfo combined are needed later for integrity check.
- let cmf = compressionInfo << 4 + compressionMethod
+ // fcheck, fdict and compresionLevel together make flags byte which is used in integrity check.
+ let flags = bitReader.byte()
- // Next five bits are fcheck bits which are supposed to be integrity check.
- let fcheck = bitReader.intFromBits(count: 5)
+ // First five bits are fcheck bits which are supposed to be integrity check:
+ // let fcheck = flags & 0x1F
// Sixth bit indicate if archive contain Adler-32 checksum of preset dictionary.
- let fdict = bitReader.intFromBits(count: 1)
+ let fdict = (flags & 0x20) >> 5
// Remaining bits indicate compression level.
- guard let compressionLevel = ZlibHeader.CompressionLevel(rawValue:
- bitReader.intFromBits(count: 2)) else { throw ZlibError.wrongCompressionLevel }
-
+ guard let compressionLevel = ZlibHeader.CompressionLevel(rawValue: (flags.toInt() & 0xC0) >> 6)
+ else { throw ZlibError.wrongCompressionLevel }
self.compressionLevel = compressionLevel
- // fcheck, fdict and compresionLevel together make flags byte which is used in integrity check.
- let flags = compressionLevel.rawValue << 6 + fdict << 5 + fcheck
guard (UInt(cmf) * 256 + UInt(flags)) % 31 == 0 else { throw ZlibError.wrongFcheck }
// If preset dictionary is present 4 bytes will be skipped.
diff --git a/Tests/7zTests.swift b/Tests/7zTests.swift
new file mode 100644
index 00000000..b8e3aeb7
--- /dev/null
+++ b/Tests/7zTests.swift
@@ -0,0 +1,379 @@
+// Copyright (c) 2017 Timofey Solomko
+// Licensed under MIT License
+//
+// See LICENSE for license information
+
+import XCTest
+import SWCompression
+
+class SevenZipTests: XCTestCase {
+
+ static let testType: String = "7z"
+
+ func test1() throws {
+ guard let testURL = Constants.url(forTest: "test1", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try SevenZipContainer.open(container: testData)
+
+ guard let answerURL = Constants.url(forAnswer: "test1") else {
+ XCTFail("Unable to get answer's URL.")
+ return
+ }
+
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
+
+ XCTAssertEqual(entries.count, 1)
+ XCTAssertEqual(entries[0].name, "test1.answer")
+ XCTAssertEqual(entries[0].isDirectory, false)
+ XCTAssertEqual(entries[0].size, answerData.count)
+ XCTAssertEqual(try entries[0].data(), answerData)
+ }
+
+ func test2() throws {
+ guard let testURL = Constants.url(forTest: "test2", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try SevenZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 2)
+
+ guard let answer1URL = Constants.url(forAnswer: "test1") else {
+ XCTFail("Unable to get answer's URL.")
+ return
+ }
+
+ var answerData = try Data(contentsOf: answer1URL, options: .mappedIfSafe)
+
+ XCTAssertEqual(entries[0].name, "test1.answer")
+ XCTAssertEqual(entries[0].isDirectory, false)
+ XCTAssertEqual(entries[0].size, answerData.count)
+ XCTAssertEqual(try entries[0].data(), answerData)
+
+ guard let answer4URL = Constants.url(forAnswer: "test4") else {
+ XCTFail("Unable to get answer's URL.")
+ return
+ }
+
+ answerData = try Data(contentsOf: answer4URL, options: .mappedIfSafe)
+
+ XCTAssertEqual(entries[1].name, "test4.answer")
+ XCTAssertEqual(entries[1].isDirectory, false)
+ XCTAssertEqual(entries[1].size, answerData.count)
+ XCTAssertEqual(try entries[1].data(), answerData)
+ }
+
+ func test3() throws {
+ guard let testURL = Constants.url(forTest: "test3", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+
+ #if LONG_TESTS
+ _ = try SevenZipContainer.open(container: testData)
+ #else
+ _ = try SevenZipContainer.info(container: testData)
+ #endif
+ }
+
+ func testAntiFile() throws {
+ guard let testURL = Constants.url(forTest: "test_anti_file", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+
+ #if LONG_TESTS
+ let entries = try SevenZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 6)
+
+ for entry in entries where entry.name == "test_create/test4.answer" {
+ XCTAssertEqual((entry as? SevenZipEntry)?.info.isAnti, true)
+ }
+ #else
+ let entries = try SevenZipContainer.info(container: testData)
+
+ XCTAssertEqual(entries.count, 6)
+
+ for entry in entries where entry.name == "test_create/test4.answer" {
+ XCTAssertEqual(entry.isAnti, true)
+ }
+ #endif
+ }
+
+ func testMultiBlocks() throws {
+ // Container was created with "solid" options set to "off" (-ms=off).
+ guard let testURL = Constants.url(forTest: "test_multi_blocks", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+
+ #if LONG_TESTS
+ let entries = try SevenZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 6)
+ #else
+ let entries = try SevenZipContainer.info(container: testData)
+
+ XCTAssertEqual(entries.count, 6)
+ #endif
+ }
+
+ func testAllTimestamps() throws {
+ // Container was created with "-mtc=on" and "-mta=on" options.
+ guard let testURL = Constants.url(forTest: "test_all_timestamps", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+
+ #if LONG_TESTS
+ let entries = try SevenZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 6)
+
+ for entry in entries {
+ XCTAssertNotNil((entry as? SevenZipEntry)?.info.creationTime)
+ XCTAssertNotNil((entry as? SevenZipEntry)?.info.accessTime)
+ // Just in case...
+ XCTAssertNotNil((entry as? SevenZipEntry)?.info.modificationTime)
+ }
+ #else
+ let entries = try SevenZipContainer.info(container: testData)
+
+ XCTAssertEqual(entries.count, 6)
+
+ for entry in entries {
+ XCTAssertNotNil(entry.creationTime)
+ XCTAssertNotNil(entry.accessTime)
+ // Just in case...
+ XCTAssertNotNil(entry.modificationTime)
+ }
+ #endif
+ }
+
+ func testComplicatedCodingScheme() throws {
+ // Container was created with these options: "-mf=BCJ -m0=Copy -m1=Deflate -m2=Delta -m3=LZMA -m4=LZMA2"
+ guard let testURL = Constants.url(forTest: "test_complicated_coding_scheme", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+
+ // In these test case the most important thing is that information about entries must be read correctly.
+ _ = try SevenZipContainer.info(container: testData)
+
+ // It is expected for `open(container:) function to throw `SevenZipError.compressionNotSupported`,
+ // because of the coders used.
+ #if LONG_TESTS
+ XCTAssertThrowsError(try SevenZipContainer.open(container: testData)) { error in
+ XCTAssertEqual(error as? SevenZipError, SevenZipError.compressionNotSupported)
+ }
+ #endif
+ }
+
+ func testEncryptedHeader() throws {
+ // Container was created with "-mhe=on".
+ guard let testURL = Constants.url(forTest: "test_encrypted_header", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+
+ XCTAssertThrowsError(try SevenZipContainer.info(container: testData)) { error in
+ XCTAssertEqual(error as? SevenZipError, SevenZipError.encryptionNotSupported)
+ }
+
+ // There is no point in testing `open(container:)` function, because we are unable to get even files' info.
+ }
+
+ func testSingleThread() throws {
+ // Container was created with disabled multithreading options.
+ // We check this just in case.
+ guard let testURL = Constants.url(forTest: "test_single_thread", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+
+ #if LONG_TESTS
+ let entries = try SevenZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 6)
+ #else
+ let entries = try SevenZipContainer.info(container: testData)
+
+ XCTAssertEqual(entries.count, 6)
+ #endif
+ }
+
+ func testBigContainer() throws {
+ guard let testURL = Constants.url(forTest: "SWCompressionSourceCode", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+
+ #if LONG_TESTS
+ _ = try SevenZipContainer.open(container: testData)
+ #else
+ _ = try SevenZipContainer.info(container: testData)
+ #endif
+ }
+
+ func test7zBZip2() throws {
+ // File in container compressed with BZip2.
+ guard let testURL = Constants.url(forTest: "test_7z_bzip2", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try SevenZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 1)
+ XCTAssertEqual(entries[0].name, "test4.answer")
+ XCTAssertEqual(entries[0].isDirectory, false)
+
+ guard let answerURL = Constants.url(forAnswer: "test4") else {
+ XCTFail("Unable to get answer's URL.")
+ return
+ }
+
+ let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe)
+
+ XCTAssertEqual(try entries[0].data(), answerData)
+ }
+
+ func test7zDeflate() throws {
+ // File in container compressed with Deflate.
+ guard let testURL = Constants.url(forTest: "test_7z_deflate", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try SevenZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 1)
+ XCTAssertEqual(entries[0].name, "test4.answer")
+ XCTAssertEqual(entries[0].isDirectory, false)
+
+ guard let answerURL = Constants.url(forAnswer: "test4") else {
+ XCTFail("Unable to get answer's URL.")
+ return
+ }
+
+ let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe)
+
+ XCTAssertEqual(try entries[0].data(), answerData)
+ }
+
+ func test7zCopy() throws {
+ // File in container is explicitly uncompressed.
+ guard let testURL = Constants.url(forTest: "test_7z_copy", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try SevenZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 1)
+ XCTAssertEqual(entries[0].name, "test4.answer")
+ XCTAssertEqual(entries[0].isDirectory, false)
+
+ guard let answerURL = Constants.url(forAnswer: "test4") else {
+ XCTFail("Unable to get answer's URL.")
+ return
+ }
+
+ let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe)
+
+ XCTAssertEqual(try entries[0].data(), answerData)
+ }
+
+ func testWinContainer() throws {
+ guard let testURL = Constants.url(forTest: "test_win", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try SevenZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 2)
+
+ XCTAssertEqual(entries[0].name, "dir")
+ XCTAssertEqual(entries[0].isDirectory, true)
+ XCTAssertEqual(entries[0].size, 0)
+ XCTAssertEqual(try entries[0].data(), Data())
+
+ XCTAssertEqual(entries[1].name, "text_win.txt")
+ XCTAssertEqual(entries[1].isDirectory, false)
+ XCTAssertEqual(entries[1].size, 15)
+ XCTAssertEqual(try entries[1].data(), "Hello, Windows!".data(using: .utf8))
+ }
+
+ func testEmptyFile() throws {
+ guard let testURL = Constants.url(forTest: "test_empty_file", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try SevenZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 1)
+ XCTAssertEqual(entries[0].name, "empty_file")
+ XCTAssertEqual(entries[0].isDirectory, false)
+ XCTAssertEqual(entries[0].size, 0)
+ XCTAssertEqual(try entries[0].data(), Data())
+ }
+
+ func testEmptyDirectory() throws {
+ guard let testURL = Constants.url(forTest: "test_empty_dir", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try SevenZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 1)
+ XCTAssertEqual(entries[0].name, "empty_dir")
+ XCTAssertEqual(entries[0].isDirectory, true)
+ XCTAssertEqual(entries[0].size, 0)
+ XCTAssertEqual(try entries[0].data(), Data())
+ }
+
+ func testEmptyContainer() throws {
+ guard let testURL = Constants.url(forTest: "test_empty_cont", withType: SevenZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try SevenZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.isEmpty, true)
+ }
+
+}
diff --git a/Tests/Bzip2Tests.swift b/Tests/Bzip2Tests.swift
index c5ac1ae1..e39ce3e1 100644
--- a/Tests/Bzip2Tests.swift
+++ b/Tests/Bzip2Tests.swift
@@ -10,31 +10,21 @@ class Bzip2Tests: XCTestCase {
static let testType: String = "bz2"
- func perform(test testName: String) {
+ func perform(test testName: String) throws {
guard let testURL = Constants.url(forTest: testName, withType: Bzip2Tests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let decompressedData = try? BZip2.decompress(data: testData) else {
- XCTFail("Unable to decompress.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let decompressedData = try BZip2.decompress(data: testData)
guard let answerURL = Constants.url(forAnswer: testName) else {
XCTFail("Unable to get asnwer's URL.")
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
XCTAssertEqual(decompressedData, answerData, "Decompression was incorrect.")
@@ -46,44 +36,44 @@ class Bzip2Tests: XCTestCase {
#endif
}
- func testBzip2_1() {
- self.perform(test: "test1")
+ func test1Bzip2() throws {
+ try self.perform(test: "test1")
}
- func testBzip2_2() {
- self.perform(test: "test2")
+ func test2Bzip2() throws {
+ try self.perform(test: "test2")
}
- func testBzip2_3() {
- self.perform(test: "test3")
+ func test3Bzip2() throws {
+ try self.perform(test: "test3")
}
- func testBzip2_4() {
- self.perform(test: "test4")
+ func test4Bzip2() throws {
+ try self.perform(test: "test4")
}
- func testBzip2_5() {
- self.perform(test: "test5")
+ func test5Bzip2() throws {
+ try self.perform(test: "test5")
}
#if LONG_TESTS
- func testBzip2_6() {
- self.perform(test: "test6")
+
+ func test6Bzip2() throws {
+ try self.perform(test: "test6")
}
+
+ func test7Bzip2() throws {
+ try self.perform(test: "test7")
+ }
+
#endif
- #if LONG_TESTS
- func testBzip2_7() {
- self.perform(test: "test7")
- }
- #endif
-
- func testBzip2_8() {
- self.perform(test: "test8")
+ func test8Bzip2() throws {
+ try self.perform(test: "test8")
}
- func testBzip2_9() {
- self.perform(test: "test9")
+ func test9Bzip2() throws {
+ try self.perform(test: "test9")
}
}
diff --git a/Tests/DeflateTests.swift b/Tests/DeflateTests.swift
index 302595f0..f6cf62a5 100644
--- a/Tests/DeflateTests.swift
+++ b/Tests/DeflateTests.swift
@@ -8,26 +8,15 @@ import SWCompression
class DeflateTests: XCTestCase {
- func perform(compressionTest testName: String) {
+ func perform(compressionTest testName: String) throws {
guard let answerURL = Constants.url(forAnswer: testName) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let deflatedData = try? Deflate.compress(data: answerData) else {
- XCTFail("Unable to deflate data")
- return
- }
-
- guard let reUncompData = try? Deflate.decompress(data: deflatedData) else {
- XCTFail("Unable to re-decompress data.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
+ let deflatedData = try Deflate.compress(data: answerData)
+ let reUncompData = try Deflate.decompress(data: deflatedData)
XCTAssertEqual(answerData, reUncompData,
"Data before compression and after decompression of compressed data aren't equal.")
@@ -41,42 +30,44 @@ class DeflateTests: XCTestCase {
}
- func testDeflate1() {
- self.perform(compressionTest: "test1")
+ func testDeflate1() throws {
+ try self.perform(compressionTest: "test1")
}
- func testDeflate2() {
- self.perform(compressionTest: "test2")
+ func testDeflate2() throws {
+ try self.perform(compressionTest: "test2")
}
- func testDeflate3() {
- self.perform(compressionTest: "test3")
+ func testDeflate3() throws {
+ try self.perform(compressionTest: "test3")
}
- func testDeflate4() {
- self.perform(compressionTest: "test4")
+ func testDeflate4() throws {
+ try self.perform(compressionTest: "test4")
}
- func testDeflate5() {
- self.perform(compressionTest: "test5")
+ func testDeflate5() throws {
+ try self.perform(compressionTest: "test5")
}
- func testDeflate6() {
- self.perform(compressionTest: "test6")
+ func testDeflate6() throws {
+ try self.perform(compressionTest: "test6")
}
#if LONG_TESTS
- func testDeflate7() {
- self.perform(compressionTest: "test7")
+
+ func testDeflate7() throws {
+ try self.perform(compressionTest: "test7")
}
+
#endif
- func testDeflate8() {
- self.perform(compressionTest: "test8")
+ func testDeflate8() throws {
+ try self.perform(compressionTest: "test8")
}
- func testDeflate9() {
- self.perform(compressionTest: "test9")
+ func testDeflate9() throws {
+ try self.perform(compressionTest: "test9")
}
}
diff --git a/Tests/GzipTests.swift b/Tests/GzipTests.swift
index 5b339152..ebbe17b5 100644
--- a/Tests/GzipTests.swift
+++ b/Tests/GzipTests.swift
@@ -10,23 +10,14 @@ class GzipTests: XCTestCase {
static let testType: String = "gz"
- func header(test testName: String, mtime: Int) {
- // Load archive.
+ func header(test testName: String, mtime: Int) throws {
guard let testURL = Constants.url(forTest: testName, withType: GzipTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- // Test GZip header parsing
- guard let testGzipHeader = try? GzipHeader(archive: testData) else {
- XCTFail("Unable to get archive header.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let testGzipHeader = try GzipHeader(archive: testData)
XCTAssertEqual(testGzipHeader.compressionMethod, .deflate, "Incorrect compression method.")
XCTAssertEqual(testGzipHeader.modificationTime, Date(timeIntervalSince1970: TimeInterval(mtime)),
@@ -36,33 +27,21 @@ class GzipTests: XCTestCase {
XCTAssertEqual(testGzipHeader.comment, nil, "Incorrect comment.")
}
- func unarchive(test testName: String) {
- // Load archive.
+ func unarchive(test testName: String) throws {
guard let testURL = Constants.url(forTest: testName, withType: GzipTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- // Test GZip unarchiving.
- guard let decompressedData = try? GzipArchive.unarchive(archive: testData) else {
- XCTFail("Unable to decompress.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let decompressedData = try? GzipArchive.unarchive(archive: testData)
guard let answerURL = Constants.url(forAnswer: testName) else {
XCTFail("Unable to get answer's URL.")
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
XCTAssertEqual(decompressedData, answerData, "Decompression was incorrect.")
@@ -74,39 +53,28 @@ class GzipTests: XCTestCase {
#endif
}
- func archive(test testName: String) {
- // Load answer data.
+ func archive(test testName: String) throws {
guard let answerURL = Constants.url(forAnswer: testName) else {
XCTFail("Unable to get answer's URL.")
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer archive.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
// Options for archiving.
let mtimeDate = Date(timeIntervalSinceNow: 0.0)
let mtime = Double(Int(mtimeDate.timeIntervalSince1970))
// Test GZip archiving.
- guard let archiveData = try? GzipArchive.archive(data: answerData,
- comment: "some file comment",
- fileName: testName + ".answer",
- writeHeaderCRC: true,
- isTextFile: true,
- osType: .macintosh,
- modificationTime: mtimeDate) else {
- XCTFail("Unable to create archive.")
- return
- }
+ let archiveData = try GzipArchive.archive(data: answerData, comment: "some file comment",
+ fileName: testName + ".answer",
+ writeHeaderCRC: true,
+ isTextFile: true,
+ osType: .macintosh,
+ modificationTime: mtimeDate)
// Test output GZip header.
- guard let testGzipHeader = try? GzipHeader(archive: archiveData) else {
- XCTFail("Unable to get archive header.")
- return
- }
+ let testGzipHeader = try GzipHeader(archive: archiveData)
XCTAssertEqual(testGzipHeader.compressionMethod, .deflate, "Incorrect compression method.")
XCTAssertEqual(testGzipHeader.modificationTime?.timeIntervalSince1970, mtime, "Incorrect mtime.")
@@ -116,78 +84,68 @@ class GzipTests: XCTestCase {
XCTAssertTrue(testGzipHeader.isTextFile)
// Test output GZip archive content.
- guard let decompressedData = try? GzipArchive.unarchive(archive: archiveData) else {
- XCTFail("Unable to decompress.")
- return
- }
+ let decompressedData = try GzipArchive.unarchive(archive: archiveData)
XCTAssertEqual(decompressedData, answerData, "Decompression was incorrect.")
}
- func testGzip1() {
- self.header(test: "test1", mtime: 1482698300)
- self.unarchive(test: "test1")
+ func testGzip1() throws {
+ try self.header(test: "test1", mtime: 1482698300)
+ try self.unarchive(test: "test1")
}
- func testGzip2() {
- self.header(test: "test2", mtime: 1482698300)
- self.unarchive(test: "test2")
+ func testGzip2() throws {
+ try self.header(test: "test2", mtime: 1482698300)
+ try self.unarchive(test: "test2")
}
- func testGzip3() {
- self.header(test: "test3", mtime: 1482698301)
- self.unarchive(test: "test3")
+ func testGzip3() throws {
+ try self.header(test: "test3", mtime: 1482698301)
+ try self.unarchive(test: "test3")
}
- func testGzip4() {
- self.header(test: "test4", mtime: 1482698301)
- self.unarchive(test: "test4")
+ func testGzip4() throws {
+ try self.header(test: "test4", mtime: 1482698301)
+ try self.unarchive(test: "test4")
}
- func testGzip5() {
- self.header(test: "test5", mtime: 1482698242)
- self.unarchive(test: "test5")
+ func testGzip5() throws {
+ try self.header(test: "test5", mtime: 1482698242)
+ try self.unarchive(test: "test5")
}
- func testGzip6() {
- self.header(test: "test6", mtime: 1482698305)
- self.unarchive(test: "test6")
+ func testGzip6() throws {
+ try self.header(test: "test6", mtime: 1482698305)
+ try self.unarchive(test: "test6")
}
- func testGzip7() {
- self.header(test: "test7", mtime: 1482698304)
- self.unarchive(test: "test7")
+ func testGzip7() throws {
+ try self.header(test: "test7", mtime: 1482698304)
+ try self.unarchive(test: "test7")
}
- func testGzip8() {
- self.header(test: "test8", mtime: 1483040005)
- self.unarchive(test: "test8")
+ func testGzip8() throws {
+ try self.header(test: "test8", mtime: 1483040005)
+ try self.unarchive(test: "test8")
}
- func testGzip9() {
- self.header(test: "test9", mtime: 1483040005)
- self.unarchive(test: "test9")
+ func testGzip9() throws {
+ try self.header(test: "test9", mtime: 1483040005)
+ try self.unarchive(test: "test9")
}
- func testGzipArchive4() {
- self.archive(test: "test4")
+ func testGzipArchive4() throws {
+ try self.archive(test: "test4")
}
- func testMultiUnarchive() {
+ func testMultiUnarchive() throws {
guard let testURL = Constants.url(forTest: "test_multi", withType: GzipTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let members = try? GzipArchive.multiUnarchive(archive: testData) else {
- XCTFail("Unable to unarchive.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let members = try GzipArchive.multiUnarchive(archive: testData)
XCTAssertEqual(members.count, 4)
@@ -201,30 +159,20 @@ class GzipTests: XCTestCase {
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
XCTAssertEqual(data, answerData)
}
}
- func testMultiUnarchiveRedundant() {
+ func testMultiUnarchiveRedundant() throws {
guard let testURL = Constants.url(forTest: "test1", withType: GzipTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let members = try? GzipArchive.multiUnarchive(archive: testData) else {
- XCTFail("Unable to unarchive.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let members = try GzipArchive.multiUnarchive(archive: testData)
XCTAssertEqual(members.count, 1)
@@ -237,10 +185,7 @@ class GzipTests: XCTestCase {
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
XCTAssertEqual(data, answerData)
}
diff --git a/Tests/LzmaTests.swift b/Tests/LzmaTests.swift
index 83b860f2..a98b0222 100644
--- a/Tests/LzmaTests.swift
+++ b/Tests/LzmaTests.swift
@@ -10,49 +10,39 @@ class LzmaTests: XCTestCase {
static let testType: String = "lzma"
- func perform(test testName: String) {
+ func perform(test testName: String) throws {
guard let testURL = Constants.url(forTest: testName, withType: LzmaTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let decompressedData = try? LZMA.decompress(data: testData) else {
- XCTFail("Unable to decompress.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let decompressedData = try LZMA.decompress(data: testData)
guard let answerURL = Constants.url(forAnswer: "test8") else {
XCTFail("Unable to get answer's URL.")
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test answer.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
XCTAssertEqual(decompressedData, answerData, "Decompression was incorrect.")
}
- func testLzma8() {
- self.perform(test: "test8")
+ func testLzma8() throws {
+ try self.perform(test: "test8")
}
- func testLzma9() {
- self.perform(test: "test9")
+ func testLzma9() throws {
+ try self.perform(test: "test9")
}
- func testLzma10() {
- self.perform(test: "test10")
+ func testLzma10() throws {
+ try self.perform(test: "test10")
}
- func testLzma11() {
- self.perform(test: "test11")
+ func testLzma11() throws {
+ try self.perform(test: "test11")
}
}
diff --git a/Tests/Results.md b/Tests/Results.md
index 796695be..25c1cbe2 100644
--- a/Tests/Results.md
+++ b/Tests/Results.md
@@ -35,6 +35,7 @@ BZip2 (Decompression)
|3.0.0|0.000|0.003|0.002|0.001|0.000|0.078|3.901|
|3.0.1|0.000|0.005|0.002|0.001|0.000|0.084|3.868|
|3.1.0|0.000|0.002|0.002|0.000|0.000|0.054|3.268|
+|3.3.0|0.000|0.002|0.002|0.000|0.000|0.051|3.948|
Deflate (Decompression)
---------------------------
@@ -51,6 +52,7 @@ Deflate (Decompression)
|3.0.0|0.001|0.002|0.001|0.001|0.001|0.044|0.206|
|3.0.1|0.001|0.002|0.001|0.000|0.001|0.046|0.210|
|3.1.0|0.001|0.001|0.001|0.000|0.000|0.045|0.210|
+|3.3.0|0.001|0.002|0.001|0.001|0.001|0.043|0.263|
Deflate (Compression)
---------------------------
@@ -63,6 +65,7 @@ Deflate (Compression)
|3.0.0|0.001|0.003|0.002|0.001|0.000|0.036|3.888|
|3.0.1|0.001|0.002|0.002|0.001|0.000|0.033|2.442|
|3.1.0|0.000|0.002|0.002|0.001|0.001|0.031|2.539|
+|3.3.0|0.001|0.002|0.002|0.001|0.001|0.032|2.542|
XZ (LZMA/LZMA2) (Decompression)
---------------------------
@@ -77,6 +80,7 @@ XZ (LZMA/LZMA2) (Decompression)
|3.0.0|0.000|0.002|0.002|0.000|0.000|0.070|0.243|
|3.0.1|0.000|0.002|0.001|0.000|0.000|0.076|0.253|
|3.1.0|0.000|0.002|0.002|0.000|0.000|0.069|0.252|
+|3.3.0|0.000|0.002|0.002|0.000|0.000|0.070|0.249|
Debug
=================
@@ -96,6 +100,7 @@ BZip2 (Decompression)
|3.0.0|0.002|0.290|0.130|0.129|0.000|7.234|221.061|
|3.0.1|0.002|0.274|0.126|0.125|0.000|6.831|-|
|3.1.0|0.001|0.021|0.012|0.006|0.000|0.619|28.992|
+|3.3.0|0.001|0.022|0.012|0.005|0.000|0.642|32.183|
Deflate (Decompression)
---------------------------
@@ -113,6 +118,7 @@ Deflate (Decompression)
|3.0.0|0.001|0.006|0.004|0.002|0.002|0.515|0.535|
|3.0.1|0.001|0.003|0.003|0.002|0.001|0.502|0.501|
|3.1.0|0.001|0.004|0.003|0.002|0.001|0.563|0.535|
+|3.3.0|0.001|0.004|0.003|0.002|0.002|0.512|3.058|
Deflate (Compression)
---------------------------
@@ -125,6 +131,7 @@ Deflate (Compression)
|3.0.0|0.004|0.030|0.020|0.004|0.000|0.933|50.459|
|3.0.1|0.002|0.017|0.006|0.002|0.000|0.762|12.384|
|3.1.0|0.002|0.018|0.006|0.002|0.002|0.770|12.161|
+|3.3.0|0.002|0.018|0.007|0.003|0.002|0.779|12.792|
XZ (LZMA/LZMA2) (Decompression)
---------------------------
@@ -139,3 +146,4 @@ XZ (LZMA/LZMA2) (Decompression)
|3.0.0|0.001|0.006|0.008|0.001|0.000|0.488|0.512|
|3.0.1|0.000|0.007|0.007|0.001|0.000|0.470|0.507|
|3.1.0|0.000|0.007|0.007|0.001|0.000|0.466|0.521|
+|3.3.0|0.000|0.006|0.008|0.001|0.000|0.536|0.527|
diff --git a/Tests/TarTests.swift b/Tests/TarTests.swift
index e1c71d71..fc03b55a 100644
--- a/Tests/TarTests.swift
+++ b/Tests/TarTests.swift
@@ -10,46 +10,33 @@ class TarTests: XCTestCase {
static let testType: String = "tar"
- func test() {
+ func test() throws {
guard let testURL = Constants.url(forTest: "test", withType: TarTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let result = try? TarContainer.open(container: testData) else {
- XCTFail("Unable to parse TAR container.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let result = try TarContainer.open(container: testData)
XCTAssertEqual(result.count, 1)
XCTAssertEqual(result[0].name, "test5.answer")
XCTAssertEqual(result[0].size, 0)
XCTAssertEqual(result[0].isDirectory, false)
- XCTAssertEqual(try? result[0].data(), Data())
+ XCTAssertEqual(try result[0].data(), Data())
}
- func testPax() {
+ func testPax() throws {
guard let testURL = Constants.url(forTest: "full_test", withType: TarTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let result = try? TarContainer.open(container: testData) else {
- XCTFail("Unable to parse TAR container.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let result = try TarContainer.open(container: testData)
XCTAssertEqual(result.count, 5)
+
for entry in result {
guard let tarEntry = entry as? TarEntry else {
XCTFail("Unable to convert entry to TarEntry.")
@@ -61,17 +48,15 @@ class TarTests: XCTestCase {
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
+
XCTAssertEqual(tarEntry.data(), answerData)
XCTAssertEqual(tarEntry.isDirectory, false)
XCTAssertNotNil(tarEntry.accessTime)
}
}
- func testFormats() {
+ func testFormats() throws {
let formatTestNames = ["test_gnu", "test_oldgnu", "test_pax", "test_ustar", "test_v7"]
guard let answerURL = Constants.url(forAnswer: "test1") else {
@@ -79,10 +64,7 @@ class TarTests: XCTestCase {
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
for testName in formatTestNames {
guard let testURL = Constants.url(forTest: testName, withType: TarTests.testType) else {
@@ -90,25 +72,18 @@ class TarTests: XCTestCase {
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let result = try? TarContainer.open(container: testData) else {
- XCTFail("Unable to parse TAR container.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let result = try TarContainer.open(container: testData)
XCTAssertEqual(result.count, 1)
XCTAssertEqual(result[0].name, "test1.answer")
XCTAssertEqual(result[0].size, 14)
XCTAssertEqual(result[0].isDirectory, false)
- XCTAssertEqual(try? result[0].data(), answerData)
+ XCTAssertEqual(try result[0].data(), answerData)
}
}
- func testLongNames() {
+ func testLongNames() throws {
let formatTestNames = ["long_test_gnu", "long_test_oldgnu", "long_test_pax"]
for testName in formatTestNames {
@@ -117,18 +92,77 @@ class TarTests: XCTestCase {
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let result = try TarContainer.open(container: testData)
- guard let entries = try? TarContainer.open(container: testData) else {
- XCTFail("Unable to parse TAR container.")
- return
- }
-
- XCTAssertEqual(entries.count, 6)
+ XCTAssertEqual(result.count, 6)
}
}
+ func testWinContainer() throws {
+ guard let testURL = Constants.url(forTest: "test_win", withType: TarTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try TarContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 2)
+
+ XCTAssertEqual(entries[0].name, "dir/")
+ XCTAssertEqual(entries[0].isDirectory, true)
+ XCTAssertEqual(entries[0].size, 0)
+ XCTAssertEqual(try entries[0].data(), Data())
+
+ XCTAssertEqual(entries[1].name, "text_win.txt")
+ XCTAssertEqual(entries[1].isDirectory, false)
+ XCTAssertEqual(entries[1].size, 15)
+ XCTAssertEqual(try entries[1].data(), "Hello, Windows!".data(using: .utf8))
+ }
+
+ func testEmptyFile() throws {
+ guard let testURL = Constants.url(forTest: "test_empty_file", withType: TarTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try TarContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 1)
+ XCTAssertEqual(entries[0].name, "empty_file")
+ XCTAssertEqual(entries[0].isDirectory, false)
+ XCTAssertEqual(entries[0].size, 0)
+ XCTAssertEqual(try entries[0].data(), Data())
+ }
+
+ func testEmptyDirectory() throws {
+ guard let testURL = Constants.url(forTest: "test_empty_dir", withType: TarTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try TarContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 1)
+ XCTAssertEqual(entries[0].name, "empty_dir/")
+ XCTAssertEqual(entries[0].isDirectory, true)
+ XCTAssertEqual(entries[0].size, 0)
+ XCTAssertEqual(try entries[0].data(), Data())
+ }
+
+ func testEmptyContainer() throws {
+ guard let testURL = Constants.url(forTest: "test_empty_cont", withType: TarTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try TarContainer.open(container: testData)
+
+ XCTAssertEqual(entries.isEmpty, true)
+ }
+
}
diff --git a/Tests/Test Files b/Tests/Test Files
index c0821ade..44bdfb54 160000
--- a/Tests/Test Files
+++ b/Tests/Test Files
@@ -1 +1 @@
-Subproject commit c0821ade35d327d198b3ed5e43f9a39d751eacb5
+Subproject commit 44bdfb54766bed3b4fbeef79e47d1486672c98f1
diff --git a/Tests/XzTests.swift b/Tests/XzTests.swift
index 019a3022..51f5a7c3 100644
--- a/Tests/XzTests.swift
+++ b/Tests/XzTests.swift
@@ -10,31 +10,21 @@ class XZTests: XCTestCase {
static let testType: String = "xz"
- func perform(test testName: String) {
+ func perform(test testName: String) throws {
guard let testURL = Constants.url(forTest: testName, withType: XZTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let decompressedData = try? XZArchive.unarchive(archive: testData) else {
- XCTFail("Unable to decompress.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let decompressedData = try XZArchive.unarchive(archive: testData)
guard let answerURL = Constants.url(forAnswer: testName) else {
XCTFail("Unable to get answer's URL.")
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
XCTAssertEqual(decompressedData, answerData, "Decompression was incorrect.")
@@ -46,59 +36,52 @@ class XZTests: XCTestCase {
#endif
}
- func testXz1() {
- self.perform(test: "test1")
+ func testXz1() throws {
+ try self.perform(test: "test1")
}
- func testXz2() {
- self.perform(test: "test2")
+ func testXz2() throws {
+ try self.perform(test: "test2")
}
- func testXz3() {
- self.perform(test: "test3")
+ func testXz3() throws {
+ try self.perform(test: "test3")
}
- func testXz4() {
+ func testXz4() throws {
// This test contains padding!
- self.perform(test: "test4")
+ try self.perform(test: "test4")
}
- func testXz5() {
- self.perform(test: "test5")
+ func testXz5() throws {
+ try self.perform(test: "test5")
}
- func testXz6() {
- self.perform(test: "test6")
+ func testXz6() throws {
+ try self.perform(test: "test6")
}
- func testXz7() {
- self.perform(test: "test7")
+ func testXz7() throws {
+ try self.perform(test: "test7")
}
- func testXz8() {
- self.perform(test: "test8")
+ func testXz8() throws {
+ try self.perform(test: "test8")
}
- func testXz9() {
- self.perform(test: "test9")
+ func testXz9() throws {
+ try self.perform(test: "test9")
}
- func testMultiUnarchive() {
+ func testMultiUnarchive() throws {
// Doesn't contain any padding.
guard let testURL = Constants.url(forTest: "test_multi", withType: XZTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let members = try? XZArchive.multiUnarchive(archive: testData) else {
- XCTFail("Unable to unarchive.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let members = try XZArchive.multiUnarchive(archive: testData)
XCTAssertEqual(members.count, 4)
@@ -108,16 +91,13 @@ class XZTests: XCTestCase {
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
XCTAssertEqual(members[i - 1], answerData)
}
}
- func testMultiUnarchiveWithPadding() {
+ func testMultiUnarchiveWithPadding() throws {
// After first stream - no padding.
// After second - 4 bytes of padding.
// Third - 8 bytes.
@@ -128,15 +108,8 @@ class XZTests: XCTestCase {
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let members = try? XZArchive.multiUnarchive(archive: testData) else {
- XCTFail("Unable to unarchive.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let members = try XZArchive.multiUnarchive(archive: testData)
XCTAssertEqual(members.count, 4)
@@ -146,30 +119,20 @@ class XZTests: XCTestCase {
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
XCTAssertEqual(members[i - 1], answerData)
}
}
- func testMultiUnarchiveRedundant1() {
+ func testMultiUnarchiveRedundant1() throws {
guard let testURL = Constants.url(forTest: "test4", withType: XZTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let members = try? XZArchive.multiUnarchive(archive: testData) else {
- XCTFail("Unable to unarchive.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let members = try XZArchive.multiUnarchive(archive: testData)
XCTAssertEqual(members.count, 1)
@@ -178,29 +141,19 @@ class XZTests: XCTestCase {
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
XCTAssertEqual(members[0], answerData)
}
- func testMultiUnarchiveRedundant2() {
+ func testMultiUnarchiveRedundant2() throws {
guard let testURL = Constants.url(forTest: "test1", withType: XZTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let members = try? XZArchive.multiUnarchive(archive: testData) else {
- XCTFail("Unable to unarchive.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let members = try XZArchive.multiUnarchive(archive: testData)
XCTAssertEqual(members.count, 1)
@@ -209,10 +162,7 @@ class XZTests: XCTestCase {
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
XCTAssertEqual(members[0], answerData)
}
diff --git a/Tests/ZipTests.swift b/Tests/ZipTests.swift
index d5cc1f5f..84634392 100644
--- a/Tests/ZipTests.swift
+++ b/Tests/ZipTests.swift
@@ -10,133 +10,99 @@ class ZipTests: XCTestCase {
static let testType: String = "zip"
- func test() {
+ func testBigContainer() throws {
guard let testURL = Constants.url(forTest: "SWCompressionSourceCode", withType: ZipTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try ZipContainer.open(container: testData)
- guard let entries = try? ZipContainer.open(container: testData) else {
- XCTFail("Unable to open ZIP archive.")
- return
- }
-
- guard entries.count == 211 else {
- XCTFail("Incorrect number of entries.")
- return
- }
+ XCTAssertEqual(entries.count, 211)
#if LONG_TESTS
for entry in entries {
- XCTAssertNotNil(try? entry.data())
+ _ = try entry.data()
}
#endif
}
- func testZip64() {
+ func testMultiThreading() throws {
+ guard let testURL = Constants.url(forTest: "SWCompressionSourceCode", withType: ZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try ZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 211)
+
+ for entry in entries {
+ DispatchQueue.global(qos: .userInitiated).async {
+ XCTAssertNotNil(try? entry.data())
+ }
+ }
+ }
+
+ func testZip64() throws {
guard let testURL = Constants.url(forTest: "TestZip64", withType: ZipTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try ZipContainer.open(container: testData)
- guard let entries = try? ZipContainer.open(container: testData) else {
- XCTFail("Unable to open ZIP archive.")
- return
- }
-
- guard entries.count == 6 else {
- XCTFail("Incorrect number of entries.")
- return
- }
+ XCTAssertEqual(entries.count, 6)
for entry in entries {
- XCTAssertNotNil(try? entry.data())
+ _ = try entry.data()
}
}
- func testDataDescriptor() {
+ func testDataDescriptor() throws {
guard let testURL = Constants.url(forTest: "TestDataDescriptor", withType: ZipTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try ZipContainer.open(container: testData)
- guard let entries = try? ZipContainer.open(container: testData) else {
- XCTFail("Unable to open ZIP archive.")
- return
- }
+ XCTAssertEqual(entries.count, 6)
- guard entries.count == 6 else {
- XCTFail("Incorrect number of entries.")
- return
- }
-
- for entry in entries where !entry.isDirectory {
- XCTAssertNotNil(try? entry.data())
+ for entry in entries {
+ _ = try entry.data()
}
}
- func testUnicode() {
+ func testUnicode() throws {
guard let testURL = Constants.url(forTest: "TestUnicode", withType: ZipTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let entries = try? ZipContainer.open(container: testData) else {
- XCTFail("Unable to open ZIP archive.")
- return
- }
-
- guard entries.count == 1 else {
- XCTFail("Incorrect number of entries.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try ZipContainer.open(container: testData)
+ XCTAssertEqual(entries.count, 1)
XCTAssertEqual(entries[0].name, "текстовый файл")
XCTAssertEqual(entries[0].isDirectory, false)
- XCTAssertNotNil(try? entries[0].data())
+ XCTAssertNotNil(try entries[0].data())
}
- func testZipLZMA() {
+ func testZipLZMA() throws {
guard let testURL = Constants.url(forTest: "test_zip_lzma", withType: ZipTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let entries = try? ZipContainer.open(container: testData) else {
- XCTFail("Unable to open ZIP archive.")
- return
- }
-
- guard entries.count == 1 else {
- XCTFail("Incorrect number of entries.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try ZipContainer.open(container: testData)
+ XCTAssertEqual(entries.count, 1)
XCTAssertEqual(entries[0].name, "test4.answer")
XCTAssertEqual(entries[0].isDirectory, false)
@@ -145,37 +111,23 @@ class ZipTests: XCTestCase {
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
- return
- }
+ let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe)
- XCTAssertEqual(try? entries[0].data(), answerData)
+ XCTAssertEqual(try entries[0].data(), answerData)
// Test repeat of getting entry data (there was a problem with it).
- XCTAssertEqual(try? entries[0].data(), answerData)
+ XCTAssertEqual(try entries[0].data(), answerData)
}
- func testZipBZip2() {
+ func testZipBZip2() throws {
guard let testURL = Constants.url(forTest: "test_zip_bzip2", withType: ZipTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let entries = try? ZipContainer.open(container: testData) else {
- XCTFail("Unable to open ZIP archive.")
- return
- }
-
- guard entries.count == 1 else {
- XCTFail("Incorrect number of entries.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try ZipContainer.open(container: testData)
+ XCTAssertEqual(entries.count, 1)
XCTAssertEqual(entries[0].name, "test4.answer")
XCTAssertEqual(entries[0].isDirectory, false)
@@ -184,12 +136,75 @@ class ZipTests: XCTestCase {
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
+ let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe)
+
+ XCTAssertEqual(try entries[0].data(), answerData)
+ }
+
+ func testWinContainer() throws {
+ guard let testURL = Constants.url(forTest: "test_win", withType: ZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
return
}
- XCTAssertEqual(try? entries[0].data(), answerData)
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try ZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 2)
+
+ XCTAssertEqual(entries[0].name, "dir/")
+ XCTAssertEqual(entries[0].isDirectory, true)
+ XCTAssertEqual(entries[0].size, 0)
+ XCTAssertEqual(try entries[0].data(), Data())
+
+ XCTAssertEqual(entries[1].name, "text_win.txt")
+ XCTAssertEqual(entries[1].isDirectory, false)
+ XCTAssertEqual(entries[1].size, 15)
+ XCTAssertEqual(try entries[1].data(), "Hello, Windows!".data(using: .utf8))
+ }
+
+ func testEmptyFile() throws {
+ guard let testURL = Constants.url(forTest: "test_empty_file", withType: ZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try ZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 1)
+ XCTAssertEqual(entries[0].name, "empty_file")
+ XCTAssertEqual(entries[0].isDirectory, false)
+ XCTAssertEqual(entries[0].size, 0)
+ XCTAssertEqual(try entries[0].data(), Data())
+ }
+
+ func testEmptyDirectory() throws {
+ guard let testURL = Constants.url(forTest: "test_empty_dir", withType: ZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try ZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.count, 1)
+ XCTAssertEqual(entries[0].name, "empty_dir/")
+ XCTAssertEqual(entries[0].isDirectory, true)
+ XCTAssertEqual(entries[0].size, 0)
+ XCTAssertEqual(try entries[0].data(), Data())
+ }
+
+ func testEmptyContainer() throws {
+ guard let testURL = Constants.url(forTest: "test_empty_cont", withType: ZipTests.testType) else {
+ XCTFail("Unable to get test's URL.")
+ return
+ }
+
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let entries = try ZipContainer.open(container: testData)
+
+ XCTAssertEqual(entries.isEmpty, true)
}
}
diff --git a/Tests/ZlibTests.swift b/Tests/ZlibTests.swift
index cdd97cb4..6adc23f3 100644
--- a/Tests/ZlibTests.swift
+++ b/Tests/ZlibTests.swift
@@ -10,7 +10,7 @@ class ZlibTests: XCTestCase {
static let testType: String = "zlib"
- func testZlib() {
+ func testZlib() throws {
let testName = "test"
guard let testURL = Constants.url(forTest: testName, withType: ZlibTests.testType) else {
@@ -18,72 +18,42 @@ class ZlibTests: XCTestCase {
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let testZlibHeader = try? ZlibHeader(archive: testData) else {
- XCTFail("Unable to get archive header.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let testZlibHeader = try ZlibHeader(archive: testData)
XCTAssertEqual(testZlibHeader.compressionMethod, .deflate, "Incorrect compression method.")
XCTAssertEqual(testZlibHeader.compressionLevel, .defaultAlgorithm, "Incorrect compression level.")
XCTAssertEqual(testZlibHeader.windowSize, 32768, "Incorrect window size.")
}
- func testZlibFull() {
+ func testZlibFull() throws {
guard let testURL = Constants.url(forTest: "random_file", withType: ZlibTests.testType) else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- let decompressedData = try? ZlibArchive.unarchive(archive: testData)
-
- guard decompressedData != nil else {
- XCTFail("Unable to decompress.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let decompressedData = try ZlibArchive.unarchive(archive: testData)
guard let answerURL = Constants.url(forAnswer: "test9") else {
XCTFail("Unable to get answer's URL.")
return
}
- guard let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load answer.")
- return
- }
+ let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe)
XCTAssertEqual(decompressedData, answerData, "Unarchiving was incorrect")
}
- func testCreateZlib() {
+ func testCreateZlib() throws {
guard let testURL = Constants.url(forAnswer: "test9") else {
XCTFail("Unable to get test's URL.")
return
}
- guard let testData = try? Data(contentsOf: testURL, options: .mappedIfSafe) else {
- XCTFail("Unable to load test archive.")
- return
- }
-
- guard let archiveData = try? ZlibArchive.archive(data: testData) else {
- XCTFail("Unable to create archive.")
- return
- }
-
- guard let reextractedData = try? ZlibArchive.unarchive(archive: archiveData) else {
- XCTFail("Unable to re-extract created archive.")
- return
- }
+ let testData = try Data(contentsOf: testURL, options: .mappedIfSafe)
+ let archiveData = try ZlibArchive.archive(data: testData)
+ let reextractedData = try ZlibArchive.unarchive(archive: archiveData)
XCTAssertEqual(testData, reextractedData, "Re-extracted data is not equal to initial data.")
}
diff --git a/docs/Archives.html b/docs/Archives.html
index 90a5b9c6..685f10ed 100644
--- a/docs/Archives.html
+++ b/docs/Archives.html
@@ -84,6 +84,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -96,19 +99,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -131,22 +149,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -211,7 +232,7 @@
@@ -246,77 +267,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Provides unarchive and archive functions for Zlib archives.
-
-
See more
-
-
-
Declaration
-
-
Swift
-
public class ZlibArchive : Archive
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Represents a Zlib archive’s header.
-
-
See more
-
-
-
Declaration
-
-
Swift
-
public struct ZlibHeader
-
-
-
-
@@ -351,7 +302,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Provides unarchive and archive functions for Zlib archives.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public class ZlibArchive : Archive
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Classes/Deflate.html b/docs/Classes/Deflate.html
index 5249f2c9..d4fe834d 100644
--- a/docs/Classes/Deflate.html
+++ b/docs/Classes/Deflate.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -254,7 +275,7 @@ It may indicate that either data is damaged or it might not be compressed with D
Decompressed data.
@@ -318,7 +339,7 @@ then static Huffman block will be created.
diff --git a/docs/Classes/GzipArchive.html b/docs/Classes/GzipArchive.html
index 294fad3e..47191b33 100644
--- a/docs/Classes/GzipArchive.html
+++ b/docs/Classes/GzipArchive.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@
@@ -288,7 +309,7 @@ it might not be archived with GZip or compressed with Deflate at all.
Unarchived data.
@@ -311,7 +332,7 @@ Multi-member GZip archives are essentially several GZip archives following each
Note
wrongCRC error contains only last processed member’s data as their associated value
-instead of all successfully processed members.
+instead of all successfully processed members.
This is a known issue and it will be fixed in future major version
because solution requires backwards-incompatible API changes.
@@ -357,7 +378,7 @@ it might not be archived with GZip or compressed with Deflate at all.
Unarchived data.
@@ -500,7 +521,7 @@ then
- Show on GitHub
+ Show on GitHub
diff --git a/docs/Classes/GzipArchive/Member.html b/docs/Classes/GzipArchive/Member.html
index 7ca6f68f..ef2b5d5e 100644
--- a/docs/Classes/GzipArchive/Member.html
+++ b/docs/Classes/GzipArchive/Member.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
@@ -248,7 +269,7 @@
diff --git a/docs/Classes/LZMA.html b/docs/Classes/LZMA.html
index c6b4748d..b794bcc1 100644
--- a/docs/Classes/LZMA.html
+++ b/docs/Classes/LZMA.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -249,7 +270,7 @@ It may indicate that either data is damaged or it might not be compressed with L
Decompressed data.
diff --git a/docs/Classes/LZMA2.html b/docs/Classes/LZMA2.html
index fe49a2ca..a50e572a 100644
--- a/docs/Classes/LZMA2.html
+++ b/docs/Classes/LZMA2.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -249,7 +270,7 @@ It may indicate that either data is damaged or it might not be compressed with L
Decompressed data.
diff --git a/docs/Classes/SevenZipContainer.html b/docs/Classes/SevenZipContainer.html
new file mode 100644
index 00000000..3022009c
--- /dev/null
+++ b/docs/Classes/SevenZipContainer.html
@@ -0,0 +1,368 @@
+
+
+
+ SevenZipContainer Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ SevenZipContainer Class Reference
+
+
+
+
+
+
+
+
+
+
+
SevenZipContainer
+
+
+
public class SevenZipContainer : Container
+
+
+
+
Provides open functions for 7-Zip containers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Processes 7-Zip container and returns an array of ContainerEntry (which are actually SevenZipEntry ).
+
+
Important
+
The order of entries is defined by 7-Zip container and,
+particularly, by the creator of a given 7-Zip container.
+It is likely that directories will be encountered earlier than files stored in those directories,
+but one SHOULD NOT rely on any particular order.
+
+
+
+
Throws
+
SevenZipError or any other error associated with compression type,
+depending on the type of the problem.
+It may indicate that either container is damaged or it might not be 7-Zip container at all.
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static func open ( container data : Data ) throws -> [ ContainerEntry ]
+
+
+
+
+
Parameters
+
+
+
+
+
+ container
+
+
+
+
+
7-Zip container’s data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Processes ZIP container and returns an array of SevenZipEntryInfo ,
+which contain various information about container’s entry.
+This is performed without decompressing entries’ data.
+
+
Important
+
The order of entries is defined by 7-Zip container and,
+particularly, by the creator of a given 7-Zip container.
+It is likely that directories will be encountered earlier than files stored in those directories,
+but one SHOULD NOT rely on any particular order.
+
+
+
+
Throws
+
SevenZipError or any other error associated with compression type,
+depending on the type of the problem.
+It may indicate that either container is damaged or it might not be 7-Zip container at all.
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static func info ( container data : Data ) throws -> [ SevenZipEntryInfo ]
+
+
+
+
+
Parameters
+
+
+
+
+
+ container
+
+
+
+
+
7-Zip container’s data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Classes/SevenZipEntry.html b/docs/Classes/SevenZipEntry.html
new file mode 100644
index 00000000..449d1858
--- /dev/null
+++ b/docs/Classes/SevenZipEntry.html
@@ -0,0 +1,519 @@
+
+
+
+ SevenZipEntry Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ SevenZipEntry Class Reference
+
+
+
+
+
+
+
+
+
+
+
SevenZipEntry
+
+
Represents an entry in 7-Zip container.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Various information about entry.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public var name : String
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public var size : Int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True, if entry is a directory.
+
+
+
+
Declaration
+
+
Swift
+
public var isDirectory : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True, if entry is a symbolic link.
+
+
+
+
Declaration
+
+
Swift
+
public let isLink : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Path to a linked file for symbolic link entry.
+
+
+
+
Declaration
+
+
Swift
+
public let linkPath : String ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Provides a dictionary with various attributes of the entry.
+FileAttributeKey values are used as dictionary keys.
+
Possible attributes:
+
+
+FileAttributeKey.posixPermissions,
+FileAttributeKey.size,
+FileAttributeKey.modificationDate,
+FileAttributeKey.creationDate,
+FileAttributeKey.type,
+FileAttributeKey.appendOnly.
+
+
+
Most modern TAR containers are in UStar format.
+
+
+
+
Declaration
+
+
Swift
+
public var entryAttributes : [ FileAttributeKey : Any ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True, if data for entry is available.
+It might not be depending on the content of the container.
+
+
+
+
Declaration
+
+
Swift
+
public let dataIsAvailable : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Returns data associated with this entry.
+
+
+
+
+
Declaration
+
+
Swift
+
public func data () throws -> Data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Classes/TarContainer.html b/docs/Classes/TarContainer.html
index 34ff78bc..d0966449 100644
--- a/docs/Classes/TarContainer.html
+++ b/docs/Classes/TarContainer.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -206,11 +227,11 @@
-
Processes TAR container and returns an array of ContainerEntries (which are actually TarEntries).
+
Processes TAR container and returns an array of ContainerEntry (which are actually TarEntry ).
Important
The order of entries is defined by TAR container and,
-particularly, by a creator of a given TAR container.
+particularly, by the creator of a given TAR container.
It is likely that directories will be encountered earlier than files stored in those directories,
but one SHOULD NOT rely on any particular order.
@@ -254,7 +275,7 @@ but one SHOULD NOT rely on any particular order.
Array of TarEntry as an array of ContainerEntry .
diff --git a/docs/Classes/TarEntry.html b/docs/Classes/TarEntry.html
index 67dd00cc..b12e3e4e 100644
--- a/docs/Classes/TarEntry.html
+++ b/docs/Classes/TarEntry.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -207,11 +228,6 @@
Represents a type of an entry.
-
-
Warning
- Deprecated and will be removed in 4.0.
FileAttributeType values will be used instead.
-
-
See more
@@ -224,7 +240,7 @@
@@ -254,7 +270,7 @@
@@ -272,7 +288,7 @@
-
True, if an entry is a directory.
+
True, if entry is a directory.
@@ -284,7 +300,7 @@
@@ -314,7 +330,7 @@
@@ -334,11 +350,6 @@
Provides a dictionary with various attributes of the entry.
FileAttributeKey values are used as dictionary keys.
-
-
Note
- Will be renamed in 4.0.
-
-
Possible attributes:
@@ -384,11 +395,6 @@
File mode.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -400,7 +406,7 @@
@@ -419,11 +425,6 @@
Owner’s ID.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -435,7 +436,7 @@
@@ -454,11 +455,6 @@
Owner’s group ID.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -470,7 +466,7 @@
@@ -489,11 +485,6 @@
The most recent modification time of the original file or directory.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -505,7 +496,7 @@
@@ -524,11 +515,6 @@
Type of entry.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -540,7 +526,7 @@
@@ -559,11 +545,6 @@
Owner’s user name.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -575,7 +556,7 @@
@@ -594,11 +575,6 @@
Owner’s group name.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -610,7 +586,7 @@
@@ -640,7 +616,7 @@
@@ -670,7 +646,7 @@
@@ -700,7 +676,7 @@
@@ -730,7 +706,37 @@
+
+
+
+
+
+
+
+
+
+
+
True if entry is a symbolic link.
+
+
+
+
Declaration
+
+
Swift
+
public let isLink : Bool
+
+
+
+
@@ -748,7 +754,7 @@
-
Path to a linked file.
+
Path to a linked file for symbolic link entry.
@@ -760,7 +766,7 @@
@@ -790,7 +796,7 @@
@@ -820,7 +826,7 @@
diff --git a/docs/Classes/TarEntry/EntryType.html b/docs/Classes/TarEntry/EntryType.html
index 8a71e54e..c5498243 100644
--- a/docs/Classes/TarEntry/EntryType.html
+++ b/docs/Classes/TarEntry/EntryType.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -185,11 +206,6 @@
Represents a type of an entry.
-
-
Warning
- Deprecated and will be removed in 4.0.
FileAttributeType values will be used instead.
-
-
@@ -223,7 +239,7 @@
@@ -257,7 +273,7 @@
@@ -291,7 +307,7 @@
@@ -325,7 +341,7 @@
@@ -359,7 +375,7 @@
@@ -393,7 +409,7 @@
@@ -427,7 +443,7 @@
@@ -461,7 +477,7 @@
@@ -495,7 +511,7 @@
@@ -529,7 +545,7 @@
@@ -563,7 +579,7 @@
diff --git a/docs/Classes/XZArchive.html b/docs/Classes/XZArchive.html
index 2900306c..16c37349 100644
--- a/docs/Classes/XZArchive.html
+++ b/docs/Classes/XZArchive.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -254,7 +275,7 @@ It may indicate that either the archive is damaged or it might not be compressed
Unarchived data.
@@ -322,7 +343,7 @@ it might not be archived with XZ or LZMA(2) at all.
Unarchived data.
diff --git a/docs/Classes/ZipContainer.html b/docs/Classes/ZipContainer.html
index 890fb0c7..4bfc4dea 100644
--- a/docs/Classes/ZipContainer.html
+++ b/docs/Classes/ZipContainer.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -206,11 +227,11 @@
-
Processes ZIP container and returns an array of ContainerEntries (which are actually ZipEntries).
+
Processes ZIP container and returns an array of ContainerEntry (which are actually ZipEntry ).
Important
The order of entries is defined by ZIP container and,
-particularly, by a creator of a given ZIP container.
+particularly, by the creator of a given ZIP container.
It is likely that directories will be encountered earlier than files stored in those directories,
but one SHOULD NOT rely on any particular order.
@@ -256,7 +277,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
Array of ZipEntry as an array of ContainerEntry .
diff --git a/docs/Classes/ZipEntry.html b/docs/Classes/ZipEntry.html
index f489e549..2a495015 100644
--- a/docs/Classes/ZipEntry.html
+++ b/docs/Classes/ZipEntry.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
@@ -248,7 +269,7 @@
@@ -267,11 +288,6 @@
File or directory attributes related to the file system of the container’s creator.
-
-
Note
- Will be renamed to
externalFileAttributes in 4.0.
-
-
@@ -283,7 +299,7 @@
@@ -313,7 +329,7 @@
@@ -331,7 +347,7 @@
-
True, if an entry is a directory.
+
True, if entry is a directory.
For MS-DOS and UNIX-like container creator’s OS, the result is based on ‘external file attributes’.
Otherwise, it is true if size of data is 0 AND last character of entry’s name is ‘/’.
@@ -345,7 +361,97 @@ Otherwise, it is true if size of data is 0 AND last character of entry’s n
+
+
+
+
+
+
+
+
+
+
+
True, if entry is a symbolic link.
+
+
+
+
Declaration
+
+
Swift
+
public let isLink : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Path to a linked file for symbolic link entry.
+
+
+
+
Declaration
+
+
Swift
+
public lazy var linkPath : String ? =
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True if entry is likely to be text or ASCII file.
+
+
+
+
Declaration
+
+
Swift
+
public var isTextFile : Bool
+
+
+
+
@@ -365,11 +471,6 @@ Otherwise, it is true if size of data is 0 AND last character of entry’s n
Provides a dictionary with various attributes of the entry.
FileAttributeKey values are used as dictionary keys.
-
-
Note
- Will be renamed in 4.0.
-
-
Possible attributes:
@@ -390,7 +491,7 @@ Otherwise, it is true if size of data is 0 AND last character of entry’s n
@@ -426,7 +527,7 @@ depending on the type of the problem. An error can indicate that container is da
diff --git a/docs/Classes/ZlibArchive.html b/docs/Classes/ZlibArchive.html
index 622802b1..a63dd3e3 100644
--- a/docs/Classes/ZlibArchive.html
+++ b/docs/Classes/ZlibArchive.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -257,7 +278,7 @@ it might not be archived with Zlib or compressed with Deflate at all.
Unarchived data.
@@ -275,7 +296,7 @@ it might not be archived with Zlib or compressed with Deflate at all.
-
Archives data into Zlib archive.
+
Archives data into Zlib archive.
Data will be also compressed with Deflate algorithm.
It will also be specified in archive’s header that the compressor used the slowest Deflate algorithm.
@@ -324,7 +345,7 @@ It will also be specified in archive’s header that the compressor used the
Resulting archive’s data.
diff --git a/docs/Compression.html b/docs/Compression.html
index 521d454f..93ac1f35 100644
--- a/docs/Compression.html
+++ b/docs/Compression.html
@@ -84,6 +84,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -96,19 +99,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -131,22 +149,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -211,7 +232,7 @@
@@ -246,7 +267,7 @@
@@ -281,7 +302,7 @@
@@ -316,7 +337,7 @@
diff --git a/docs/Containers.html b/docs/Containers.html
index 9aca31f2..b53812a7 100644
--- a/docs/Containers.html
+++ b/docs/Containers.html
@@ -84,6 +84,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -96,19 +99,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -131,22 +149,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -188,9 +209,9 @@
@@ -198,20 +219,20 @@
-
Provides open function for ZIP containers.
+
Provides open functions for 7-Zip containers.
-
See more
+
See more
@@ -223,9 +244,9 @@
@@ -233,20 +254,55 @@
-
Represents either a file or directory entry in ZIP container.
+
Represents an entry in 7-Zip container.
-
See more
+
See more
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Provides information about 7-Zip entry.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public struct SevenZipEntryInfo
+
+
+
+
@@ -281,7 +337,7 @@
@@ -316,7 +372,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Provides open function for ZIP containers.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public class ZipContainer : Container
+
+
+
+
+
+
+
+
+
+
@@ -253,7 +274,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -287,7 +308,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -321,7 +342,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -355,7 +376,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -389,7 +410,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -423,7 +444,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -457,7 +478,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -491,7 +512,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -526,7 +547,7 @@ Associated value of the error contains already decompressed data.
diff --git a/docs/Enums/DeflateError.html b/docs/Enums/DeflateError.html
index e636f345..81b45388 100644
--- a/docs/Enums/DeflateError.html
+++ b/docs/Enums/DeflateError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
@@ -253,7 +274,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
@@ -287,7 +308,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
@@ -321,7 +342,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
diff --git a/docs/Enums/GzipError.html b/docs/Enums/GzipError.html
index d01cc672..130dd82b 100644
--- a/docs/Enums/GzipError.html
+++ b/docs/Enums/GzipError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either archive is damaged or it might not be GZip archive a
@@ -253,7 +274,7 @@ It may indicate that either archive is damaged or it might not be GZip archive a
@@ -288,7 +309,7 @@ that archive uses a newer version of GZip format.
@@ -322,7 +343,7 @@ that archive uses a newer version of GZip format.
@@ -357,7 +378,7 @@ Associated value of the error contains already decompressed data.
@@ -391,7 +412,7 @@ Associated value of the error contains already decompressed data.
@@ -425,7 +446,7 @@ Associated value of the error contains already decompressed data.
diff --git a/docs/Enums/LZMA2Error.html b/docs/Enums/LZMA2Error.html
index 2cdbab12..d07c68ab 100644
--- a/docs/Enums/LZMA2Error.html
+++ b/docs/Enums/LZMA2Error.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -253,7 +274,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -287,7 +308,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -321,7 +342,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -356,7 +377,7 @@ amount of compressed data read is different from the one stored in LZMA2 packet.
diff --git a/docs/Enums/LZMAError.html b/docs/Enums/LZMAError.html
index b123e567..dce9345a 100644
--- a/docs/Enums/LZMAError.html
+++ b/docs/Enums/LZMAError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -253,7 +274,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -287,7 +308,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -321,7 +342,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -355,7 +376,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -389,7 +410,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -423,7 +444,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -457,7 +478,7 @@ It may indicate that either data is damaged or it might not be compressed with L
diff --git a/docs/Enums/SevenZipError.html b/docs/Enums/SevenZipError.html
new file mode 100644
index 00000000..685e92a7
--- /dev/null
+++ b/docs/Enums/SevenZipError.html
@@ -0,0 +1,638 @@
+
+
+
+ SevenZipError Enum Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ SevenZipError Enum Reference
+
+
+
+
+
+
+
+
+
+
+
SevenZipError
+
+
+
public enum SevenZipError : Error
+
+
+
+
Represents an error, which happened during processing 7-Zip container.
+It may indicate that either container is damaged or it might not be 7-Zip container at all.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Wrong container’s signature.
+
+
+
+
Declaration
+
+
Swift
+
case wrongSignature
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Unsupporte version of container’s format.
+
+
+
+
Declaration
+
+
Swift
+
case wrongFormatVersion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CRC either of one of the files from the container
+or one of the container’s strucutures is incorrect.
+
+
+
+
Declaration
+
+
Swift
+
case wrongCRC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Size either of one of the files from the container
+or one of the container’s strucutures is incorrect.
+
+
+
+
Declaration
+
+
Swift
+
case wrongSize
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Files have StartPos property. This feature isn’t supported.
+
+
+
+
Declaration
+
+
Swift
+
case startPosNotSupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
External feature isn’t supported.
+
+
+
+
Declaration
+
+
Swift
+
case externalNotSupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Coders with multiple in and/or out streams aren’t supported.
+
+
+
+
Declaration
+
+
Swift
+
case multiStreamNotSupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Additional streams feature isn’t supported.
+
+
+
+
Declaration
+
+
Swift
+
case additionalStreamsNotSupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry is compressed using unsupported compression method.
+
+
+
+
Declaration
+
+
Swift
+
case compressionNotSupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry or container’s header is encrypted. This feature isn’t supported.
+
+
+
+
Declaration
+
+
Swift
+
case encryptionNotSupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s data isn’t available.
+
+
+
+
Declaration
+
+
Swift
+
case dataIsUnavailable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Unknown/incorrect internal 7-Zip structure was encountered or
+no internal structure was found where it must be.
+
+
+
+
Declaration
+
+
Swift
+
case internalStructureError
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Enums/TarError.html b/docs/Enums/TarError.html
index 09096368..d1731f31 100644
--- a/docs/Enums/TarError.html
+++ b/docs/Enums/TarError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either container is damaged or it might not be TAR containe
@@ -253,7 +274,7 @@ It may indicate that either container is damaged or it might not be TAR containe
@@ -287,7 +308,7 @@ It may indicate that either container is damaged or it might not be TAR containe
@@ -321,7 +342,7 @@ It may indicate that either container is damaged or it might not be TAR containe
@@ -355,7 +376,7 @@ It may indicate that either container is damaged or it might not be TAR containe
@@ -389,7 +410,7 @@ It may indicate that either container is damaged or it might not be TAR containe
diff --git a/docs/Enums/XZError.html b/docs/Enums/XZError.html
index 403c9e4d..5b8fdd1a 100644
--- a/docs/Enums/XZError.html
+++ b/docs/Enums/XZError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either archive is damaged or it might not be XZ archive at
@@ -253,7 +274,7 @@ It may indicate that either archive is damaged or it might not be XZ archive at
@@ -288,7 +309,7 @@ that archive uses a newer version of XZ format.
@@ -322,7 +343,7 @@ that archive uses a newer version of XZ format.
@@ -356,7 +377,7 @@ that archive uses a newer version of XZ format.
@@ -390,7 +411,7 @@ that archive uses a newer version of XZ format.
@@ -425,7 +446,7 @@ amount of compressed data read is different from the one stored in archive.
@@ -460,7 +481,7 @@ Associated value of the error contains already decompressed data.
@@ -494,7 +515,7 @@ Associated value of the error contains already decompressed data.
@@ -528,7 +549,7 @@ Associated value of the error contains already decompressed data.
diff --git a/docs/Enums/ZipError.html b/docs/Enums/ZipError.html
index ec9230da..0363f329 100644
--- a/docs/Enums/ZipError.html
+++ b/docs/Enums/ZipError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -253,7 +274,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -287,7 +308,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -321,7 +342,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -355,7 +376,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -389,7 +410,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -423,7 +444,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -457,7 +478,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -491,7 +512,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -526,7 +547,7 @@ Associated value of the error contains entry’s data.
@@ -560,7 +581,7 @@ Associated value of the error contains entry’s data.
diff --git a/docs/Enums/ZlibError.html b/docs/Enums/ZlibError.html
index 9dfa2b82..5af46e36 100644
--- a/docs/Enums/ZlibError.html
+++ b/docs/Enums/ZlibError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either archive is damaged or it might not be Zlib archive a
@@ -253,7 +274,7 @@ It may indicate that either archive is damaged or it might not be Zlib archive a
@@ -287,7 +308,7 @@ It may indicate that either archive is damaged or it might not be Zlib archive a
@@ -321,7 +342,7 @@ It may indicate that either archive is damaged or it might not be Zlib archive a
@@ -356,7 +377,7 @@ Associated value of the error contains already decompressed data.
diff --git a/docs/Errors.html b/docs/Errors.html
index 8aba76a1..f1408cfa 100644
--- a/docs/Errors.html
+++ b/docs/Errors.html
@@ -84,6 +84,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -96,19 +99,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -131,22 +149,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -212,7 +233,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -248,79 +269,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Represents an error, which happened during processing GZip archive.
-It may indicate that either archive is damaged or it might not be GZip archive at all.
-
-
See more
-
-
-
Declaration
-
-
Swift
-
public enum GzipError : Error
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Represents an error, which happened during LZMA2 decompression.
-It may indicate that either data is damaged or it might not be compressed with LZMA2 at all.
-
-
See more
-
-
-
Declaration
-
-
Swift
-
public enum LZMA2Error : Error
-
-
-
-
@@ -356,7 +305,79 @@ It may indicate that either data is damaged or it might not be compressed with L
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents an error, which happened during LZMA2 decompression.
+It may indicate that either data is damaged or it might not be compressed with LZMA2 at all.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public enum LZMA2Error : Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents an error, which happened during processing 7-Zip container.
+It may indicate that either container is damaged or it might not be 7-Zip container at all.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public enum SevenZipError : Error
+
+
+
+
@@ -399,43 +420,7 @@ It may indicate that either container is damaged or it might not be TAR containe
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Represents an error, which happened during unarchiving XZ archive.
-It may indicate that either archive is damaged or it might not be XZ archive at all.
-
-
See more
-
-
-
Declaration
-
-
Swift
-
public enum XZError : Error
-
-
-
-
@@ -471,7 +456,79 @@ It may indicate that either container is damaged or it might not be ZIP containe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents an error, which happened during processing GZip archive.
+It may indicate that either archive is damaged or it might not be GZip archive at all.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public enum GzipError : Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents an error, which happened during unarchiving XZ archive.
+It may indicate that either archive is damaged or it might not be XZ archive at all.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public enum XZError : Error
+
+
+
+
@@ -507,7 +564,7 @@ It may indicate that either archive is damaged or it might not be Zlib archive a
diff --git a/docs/Protocols.html b/docs/Protocols.html
index 485111bb..6a226ed3 100644
--- a/docs/Protocols.html
+++ b/docs/Protocols.html
@@ -84,6 +84,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -96,19 +99,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -131,22 +149,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -211,7 +232,7 @@
@@ -242,7 +263,7 @@
@@ -273,7 +294,7 @@
@@ -304,7 +325,7 @@
diff --git a/docs/Protocols/Archive.html b/docs/Protocols/Archive.html
index 9eb2c704..c234031c 100644
--- a/docs/Protocols/Archive.html
+++ b/docs/Protocols/Archive.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
diff --git a/docs/Protocols/Container.html b/docs/Protocols/Container.html
index 7db7fa00..67cb930c 100644
--- a/docs/Protocols/Container.html
+++ b/docs/Protocols/Container.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
diff --git a/docs/Protocols/ContainerEntry.html b/docs/Protocols/ContainerEntry.html
index 37460921..757ab349 100644
--- a/docs/Protocols/ContainerEntry.html
+++ b/docs/Protocols/ContainerEntry.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
@@ -248,7 +269,7 @@
@@ -266,7 +287,7 @@
-
Check if entry is a directory.
+
True, if entry is a directory.
@@ -278,7 +299,67 @@
+
+
+
+
+
+
+
+
+
+
+
True, if entry is a symbolic link.
+
+
+
+
Declaration
+
+
Swift
+
var isLink : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Path to a linked file for symbolic link entry.
+
+
+
+
Declaration
+
+
Swift
+
var linkPath : String ?
+
+
+
+
@@ -314,7 +395,7 @@
@@ -344,7 +425,7 @@
diff --git a/docs/Protocols/DecompressionAlgorithm.html b/docs/Protocols/DecompressionAlgorithm.html
index f6a8c7b7..6a9d331c 100644
--- a/docs/Protocols/DecompressionAlgorithm.html
+++ b/docs/Protocols/DecompressionAlgorithm.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
diff --git a/docs/Structs/GzipHeader.html b/docs/Structs/GzipHeader.html
index f8c38add..9dafc6eb 100644
--- a/docs/Structs/GzipHeader.html
+++ b/docs/Structs/GzipHeader.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@
@@ -250,7 +271,7 @@
@@ -280,7 +301,7 @@
@@ -312,7 +333,7 @@ then this property is nil.
@@ -342,7 +363,7 @@ then this property is nil.
@@ -372,7 +393,7 @@ then this property is nil.
@@ -402,7 +423,7 @@ then this property is nil.
@@ -432,7 +453,7 @@ then this property is nil.
@@ -489,7 +510,7 @@ it might not be archived with GZip at all.
diff --git a/docs/Structs/GzipHeader/CompressionMethod.html b/docs/Structs/GzipHeader/CompressionMethod.html
index 25266d0f..227717ee 100644
--- a/docs/Structs/GzipHeader/CompressionMethod.html
+++ b/docs/Structs/GzipHeader/CompressionMethod.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
diff --git a/docs/Structs/GzipHeader/FileSystemType.html b/docs/Structs/GzipHeader/FileSystemType.html
index 15a6aaa8..33e686af 100644
--- a/docs/Structs/GzipHeader/FileSystemType.html
+++ b/docs/Structs/GzipHeader/FileSystemType.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -223,7 +244,7 @@
@@ -257,7 +278,7 @@
@@ -291,7 +312,7 @@
@@ -325,7 +346,7 @@
@@ -359,7 +380,7 @@
diff --git a/docs/Structs/SevenZipEntryInfo.html b/docs/Structs/SevenZipEntryInfo.html
new file mode 100644
index 00000000..236e5f9c
--- /dev/null
+++ b/docs/Structs/SevenZipEntryInfo.html
@@ -0,0 +1,745 @@
+
+
+
+ SevenZipEntryInfo Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ SevenZipEntryInfo Struct Reference
+
+
+
+
+
+
+
+
+
+
+
SevenZipEntryInfo
+
+
+
public struct SevenZipEntryInfo
+
+
+
+
Provides information about 7-Zip entry.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents file access permissions in UNIX format.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public struct Permissions : OptionSet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents file attributes in DOS format.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public struct DosAttributes : OptionSet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents file type in UNIX format.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public enum UnixType : UInt32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public let name : String ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public let size : Int ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True, if entry is a directory.
+
+
+
+
Declaration
+
+
Swift
+
public let isDirectory : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s last access time and date.
+
+
+
+
Declaration
+
+
Swift
+
public let accessTime : Date ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s creation time and date.
+
+
+
+
Declaration
+
+
Swift
+
public let creationTime : Date ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s last modification time and date.
+
+
+
+
Declaration
+
+
Swift
+
public let modificationTime : Date ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
7-Zip internal property which may contain UNIX permissions, type and/or DOS attributes.
+
+
+
+
Declaration
+
+
Swift
+
public let winAttributes : UInt32 ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s UNIX file access permissions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s DOS attributes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s UNIX file type.
+
+
+
+
Declaration
+
+
Swift
+
public let unixType : UnixType ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
7-Zip internal propety. Indicates whether entry has a stream (data) inside container.
+
+
+
+
Declaration
+
+
Swift
+
public let hasStream : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True, if entry is an empty file. 7-Zip internal property.
+
+
+
+
Declaration
+
+
Swift
+
public let isEmpty : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True if entry is an anti-file.
+Used in differential backups to indicate that file should be deleted.
+7-Zip internal property.
+
+
+
+
Declaration
+
+
Swift
+
public let isAnti : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CRC32 of entry’s data.
+
+
+
+
Declaration
+
+
Swift
+
public let crc : UInt32 ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Structs/SevenZipEntryInfo/DosAttributes.html b/docs/Structs/SevenZipEntryInfo/DosAttributes.html
new file mode 100644
index 00000000..a9d50f4f
--- /dev/null
+++ b/docs/Structs/SevenZipEntryInfo/DosAttributes.html
@@ -0,0 +1,470 @@
+
+
+
+ DosAttributes Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ DosAttributes Struct Reference
+
+
+
+
+
+
+
+
+
+
+
DosAttributes
+
+
+
public struct DosAttributes : OptionSet
+
+
+
+
Represents file attributes in DOS format.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Raw bit flags value.
+
+
+
+
Declaration
+
+
Swift
+
public let rawValue : UInt32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Initializes attributes with bit flags.
+
+
+
+
Declaration
+
+
Swift
+
public init ( rawValue : UInt32 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
File is archive or archived.
+
+
+
+
Declaration
+
+
Swift
+
public static let archive = DosAttributes ( rawValue : 0b00100000 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
File is a directory.
+
+
+
+
Declaration
+
+
Swift
+
public static let directory = DosAttributes ( rawValue : 0b00010000 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let volume = DosAttributes ( rawValue : 0b00001000 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
File is a system file.
+
+
+
+
Declaration
+
+
Swift
+
public static let system = DosAttributes ( rawValue : 0b00000100 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let hidden = DosAttributes ( rawValue : 0b00000010 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let readOnly = DosAttributes ( rawValue : 0b00000001 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Structs/SevenZipEntryInfo/Permissions.html b/docs/Structs/SevenZipEntryInfo/Permissions.html
new file mode 100644
index 00000000..1e309e9b
--- /dev/null
+++ b/docs/Structs/SevenZipEntryInfo/Permissions.html
@@ -0,0 +1,650 @@
+
+
+
+ Permissions Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ Permissions Struct Reference
+
+
+
+
+
+
+
+
+
+
+
Permissions
+
+
+
public struct Permissions : OptionSet
+
+
+
+
Represents file access permissions in UNIX format.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Raw bit flags value (in decimal).
+
+
+
+
Declaration
+
+
Swift
+
public let rawValue : UInt32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Initializes permissions with bit flags in decimal.
+
+
+
+
Declaration
+
+
Swift
+
public init ( rawValue : UInt32 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let setuid = Permissions ( rawValue : 0 o4000 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let setgid = Permissions ( rawValue : 0 o2000 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let sticky = Permissions ( rawValue : 0 o1000 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let readOwner = Permissions ( rawValue : 0 o0400 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let writeOwner = Permissions ( rawValue : 0 o0200 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let executeOwner = Permissions ( rawValue : 0 o0100 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let readGroup = Permissions ( rawValue : 0 o0040 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let writeGroup = Permissions ( rawValue : 0 o0020 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let executeGroup = Permissions ( rawValue : 0 o0010 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let readOther = Permissions ( rawValue : 0 o0004 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let writeOther = Permissions ( rawValue : 0 o0002 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Others can execute.
+
+
+
+
Declaration
+
+
Swift
+
public static let executeOther = Permissions ( rawValue : 0 o0001 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Structs/SevenZipEntryInfo/UnixType.html b/docs/Structs/SevenZipEntryInfo/UnixType.html
new file mode 100644
index 00000000..b15690ef
--- /dev/null
+++ b/docs/Structs/SevenZipEntryInfo/UnixType.html
@@ -0,0 +1,464 @@
+
+
+
+ UnixType Enum Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ UnixType Enum Reference
+
+
+
+
+
+
+
+
+
+
+
UnixType
+
+
+
public enum UnixType : UInt32
+
+
+
+
Represents file type in UNIX format.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
case fifo = 0 o010000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Character special file.
+
+
+
+
Declaration
+
+
Swift
+
case characterSpecial = 0 o020000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
case directory = 0 o040000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Block special file.
+
+
+
+
Declaration
+
+
Swift
+
case blockSpecial = 0 o060000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
case regular = 0 o100000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
case symbolicLink = 0 o120000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
case socket = 0 o140000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Structs/ZlibHeader.html b/docs/Structs/ZlibHeader.html
index f5be602a..32bba4c3 100644
--- a/docs/Structs/ZlibHeader.html
+++ b/docs/Structs/ZlibHeader.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@
@@ -250,7 +271,7 @@
@@ -280,7 +301,7 @@
@@ -310,7 +331,7 @@
@@ -340,7 +361,7 @@
@@ -397,7 +418,7 @@ it might not be archived with Zlib at all.
diff --git a/docs/Structs/ZlibHeader/CompressionLevel.html b/docs/Structs/ZlibHeader/CompressionLevel.html
index b90a15be..3215bc97 100644
--- a/docs/Structs/ZlibHeader/CompressionLevel.html
+++ b/docs/Structs/ZlibHeader/CompressionLevel.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
@@ -252,7 +273,7 @@
@@ -286,7 +307,7 @@
@@ -320,7 +341,7 @@
diff --git a/docs/Structs/ZlibHeader/CompressionMethod.html b/docs/Structs/ZlibHeader/CompressionMethod.html
index 104b27e1..b63100ce 100644
--- a/docs/Structs/ZlibHeader/CompressionMethod.html
+++ b/docs/Structs/ZlibHeader/CompressionMethod.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Archives.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Archives.html
index 90a5b9c6..685f10ed 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Archives.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Archives.html
@@ -84,6 +84,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -96,19 +99,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -131,22 +149,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -211,7 +232,7 @@
@@ -246,77 +267,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Provides unarchive and archive functions for Zlib archives.
-
-
See more
-
-
-
Declaration
-
-
Swift
-
public class ZlibArchive : Archive
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Represents a Zlib archive’s header.
-
-
See more
-
-
-
Declaration
-
-
Swift
-
public struct ZlibHeader
-
-
-
-
@@ -351,7 +302,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Provides unarchive and archive functions for Zlib archives.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public class ZlibArchive : Archive
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html
index 5249f2c9..d4fe834d 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -254,7 +275,7 @@ It may indicate that either data is damaged or it might not be compressed with D
Decompressed data.
@@ -318,7 +339,7 @@ then static Huffman block will be created.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html
index 294fad3e..47191b33 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@
@@ -288,7 +309,7 @@ it might not be archived with GZip or compressed with Deflate at all.
Unarchived data.
@@ -311,7 +332,7 @@ Multi-member GZip archives are essentially several GZip archives following each
Note
wrongCRC error contains only last processed member’s data as their associated value
-instead of all successfully processed members.
+instead of all successfully processed members.
This is a known issue and it will be fixed in future major version
because solution requires backwards-incompatible API changes.
@@ -357,7 +378,7 @@ it might not be archived with GZip or compressed with Deflate at all.
Unarchived data.
@@ -500,7 +521,7 @@ then
- Show on GitHub
+ Show on GitHub
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive/Member.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive/Member.html
index 7ca6f68f..ef2b5d5e 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive/Member.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive/Member.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
@@ -248,7 +269,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html
index c6b4748d..b794bcc1 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -249,7 +270,7 @@ It may indicate that either data is damaged or it might not be compressed with L
Decompressed data.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html
index fe49a2ca..a50e572a 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -249,7 +270,7 @@ It may indicate that either data is damaged or it might not be compressed with L
Decompressed data.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipContainer.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipContainer.html
new file mode 100644
index 00000000..3022009c
--- /dev/null
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipContainer.html
@@ -0,0 +1,368 @@
+
+
+
+ SevenZipContainer Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ SevenZipContainer Class Reference
+
+
+
+
+
+
+
+
+
+
+
SevenZipContainer
+
+
+
public class SevenZipContainer : Container
+
+
+
+
Provides open functions for 7-Zip containers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Processes 7-Zip container and returns an array of ContainerEntry (which are actually SevenZipEntry ).
+
+
Important
+
The order of entries is defined by 7-Zip container and,
+particularly, by the creator of a given 7-Zip container.
+It is likely that directories will be encountered earlier than files stored in those directories,
+but one SHOULD NOT rely on any particular order.
+
+
+
+
Throws
+
SevenZipError or any other error associated with compression type,
+depending on the type of the problem.
+It may indicate that either container is damaged or it might not be 7-Zip container at all.
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static func open ( container data : Data ) throws -> [ ContainerEntry ]
+
+
+
+
+
Parameters
+
+
+
+
+
+ container
+
+
+
+
+
7-Zip container’s data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Processes ZIP container and returns an array of SevenZipEntryInfo ,
+which contain various information about container’s entry.
+This is performed without decompressing entries’ data.
+
+
Important
+
The order of entries is defined by 7-Zip container and,
+particularly, by the creator of a given 7-Zip container.
+It is likely that directories will be encountered earlier than files stored in those directories,
+but one SHOULD NOT rely on any particular order.
+
+
+
+
Throws
+
SevenZipError or any other error associated with compression type,
+depending on the type of the problem.
+It may indicate that either container is damaged or it might not be 7-Zip container at all.
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static func info ( container data : Data ) throws -> [ SevenZipEntryInfo ]
+
+
+
+
+
Parameters
+
+
+
+
+
+ container
+
+
+
+
+
7-Zip container’s data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipEntry.html
new file mode 100644
index 00000000..449d1858
--- /dev/null
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipEntry.html
@@ -0,0 +1,519 @@
+
+
+
+ SevenZipEntry Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ SevenZipEntry Class Reference
+
+
+
+
+
+
+
+
+
+
+
SevenZipEntry
+
+
Represents an entry in 7-Zip container.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Various information about entry.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public var name : String
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public var size : Int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True, if entry is a directory.
+
+
+
+
Declaration
+
+
Swift
+
public var isDirectory : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True, if entry is a symbolic link.
+
+
+
+
Declaration
+
+
Swift
+
public let isLink : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Path to a linked file for symbolic link entry.
+
+
+
+
Declaration
+
+
Swift
+
public let linkPath : String ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Provides a dictionary with various attributes of the entry.
+FileAttributeKey values are used as dictionary keys.
+
Possible attributes:
+
+
+FileAttributeKey.posixPermissions,
+FileAttributeKey.size,
+FileAttributeKey.modificationDate,
+FileAttributeKey.creationDate,
+FileAttributeKey.type,
+FileAttributeKey.appendOnly.
+
+
+
Most modern TAR containers are in UStar format.
+
+
+
+
Declaration
+
+
Swift
+
public var entryAttributes : [ FileAttributeKey : Any ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True, if data for entry is available.
+It might not be depending on the content of the container.
+
+
+
+
Declaration
+
+
Swift
+
public let dataIsAvailable : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Returns data associated with this entry.
+
+
+
+
+
Declaration
+
+
Swift
+
public func data () throws -> Data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html
index 34ff78bc..d0966449 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -206,11 +227,11 @@
-
Processes TAR container and returns an array of ContainerEntries (which are actually TarEntries).
+
Processes TAR container and returns an array of ContainerEntry (which are actually TarEntry ).
Important
The order of entries is defined by TAR container and,
-particularly, by a creator of a given TAR container.
+particularly, by the creator of a given TAR container.
It is likely that directories will be encountered earlier than files stored in those directories,
but one SHOULD NOT rely on any particular order.
@@ -254,7 +275,7 @@ but one SHOULD NOT rely on any particular order.
Array of TarEntry as an array of ContainerEntry .
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry.html
index 67dd00cc..b12e3e4e 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -207,11 +228,6 @@
Represents a type of an entry.
-
-
Warning
- Deprecated and will be removed in 4.0.
FileAttributeType values will be used instead.
-
-
See more
@@ -224,7 +240,7 @@
@@ -254,7 +270,7 @@
@@ -272,7 +288,7 @@
-
True, if an entry is a directory.
+
True, if entry is a directory.
@@ -284,7 +300,7 @@
@@ -314,7 +330,7 @@
@@ -334,11 +350,6 @@
Provides a dictionary with various attributes of the entry.
FileAttributeKey values are used as dictionary keys.
-
-
Note
- Will be renamed in 4.0.
-
-
Possible attributes:
@@ -384,11 +395,6 @@
File mode.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -400,7 +406,7 @@
@@ -419,11 +425,6 @@
Owner’s ID.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -435,7 +436,7 @@
@@ -454,11 +455,6 @@
Owner’s group ID.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -470,7 +466,7 @@
@@ -489,11 +485,6 @@
The most recent modification time of the original file or directory.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -505,7 +496,7 @@
@@ -524,11 +515,6 @@
Type of entry.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -540,7 +526,7 @@
@@ -559,11 +545,6 @@
Owner’s user name.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -575,7 +556,7 @@
@@ -594,11 +575,6 @@
Owner’s group name.
-
-
Warning
- Deprecated and will be removed in 4.0. Use
entryAttributes instead.
-
-
@@ -610,7 +586,7 @@
@@ -640,7 +616,7 @@
@@ -670,7 +646,7 @@
@@ -700,7 +676,7 @@
@@ -730,7 +706,37 @@
+
+
+
+
+
+
+
+
+
+
+
True if entry is a symbolic link.
+
+
+
+
Declaration
+
+
Swift
+
public let isLink : Bool
+
+
+
+
@@ -748,7 +754,7 @@
-
Path to a linked file.
+
Path to a linked file for symbolic link entry.
@@ -760,7 +766,7 @@
@@ -790,7 +796,7 @@
@@ -820,7 +826,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry/EntryType.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry/EntryType.html
index 8a71e54e..c5498243 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry/EntryType.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry/EntryType.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -185,11 +206,6 @@
Represents a type of an entry.
-
-
Warning
- Deprecated and will be removed in 4.0.
FileAttributeType values will be used instead.
-
-
@@ -223,7 +239,7 @@
@@ -257,7 +273,7 @@
@@ -291,7 +307,7 @@
@@ -325,7 +341,7 @@
@@ -359,7 +375,7 @@
@@ -393,7 +409,7 @@
@@ -427,7 +443,7 @@
@@ -461,7 +477,7 @@
@@ -495,7 +511,7 @@
@@ -529,7 +545,7 @@
@@ -563,7 +579,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html
index 2900306c..16c37349 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -254,7 +275,7 @@ It may indicate that either the archive is damaged or it might not be compressed
Unarchived data.
@@ -322,7 +343,7 @@ it might not be archived with XZ or LZMA(2) at all.
Unarchived data.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html
index 890fb0c7..4bfc4dea 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -206,11 +227,11 @@
-
Processes ZIP container and returns an array of ContainerEntries (which are actually ZipEntries).
+
Processes ZIP container and returns an array of ContainerEntry (which are actually ZipEntry ).
Important
The order of entries is defined by ZIP container and,
-particularly, by a creator of a given ZIP container.
+particularly, by the creator of a given ZIP container.
It is likely that directories will be encountered earlier than files stored in those directories,
but one SHOULD NOT rely on any particular order.
@@ -256,7 +277,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
Array of ZipEntry as an array of ContainerEntry .
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipEntry.html
index f489e549..2a495015 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipEntry.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipEntry.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
@@ -248,7 +269,7 @@
@@ -267,11 +288,6 @@
File or directory attributes related to the file system of the container’s creator.
-
-
Note
- Will be renamed to
externalFileAttributes in 4.0.
-
-
@@ -283,7 +299,7 @@
@@ -313,7 +329,7 @@
@@ -331,7 +347,7 @@
-
True, if an entry is a directory.
+
True, if entry is a directory.
For MS-DOS and UNIX-like container creator’s OS, the result is based on ‘external file attributes’.
Otherwise, it is true if size of data is 0 AND last character of entry’s name is ‘/’.
@@ -345,7 +361,97 @@ Otherwise, it is true if size of data is 0 AND last character of entry’s n
+
+
+
+
+
+
+
+
+
+
+
True, if entry is a symbolic link.
+
+
+
+
Declaration
+
+
Swift
+
public let isLink : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Path to a linked file for symbolic link entry.
+
+
+
+
Declaration
+
+
Swift
+
public lazy var linkPath : String ? =
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True if entry is likely to be text or ASCII file.
+
+
+
+
Declaration
+
+
Swift
+
public var isTextFile : Bool
+
+
+
+
@@ -365,11 +471,6 @@ Otherwise, it is true if size of data is 0 AND last character of entry’s n
Provides a dictionary with various attributes of the entry.
FileAttributeKey values are used as dictionary keys.
-
-
Note
- Will be renamed in 4.0.
-
-
Possible attributes:
@@ -390,7 +491,7 @@ Otherwise, it is true if size of data is 0 AND last character of entry’s n
@@ -426,7 +527,7 @@ depending on the type of the problem. An error can indicate that container is da
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html
index 622802b1..a63dd3e3 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -257,7 +278,7 @@ it might not be archived with Zlib or compressed with Deflate at all.
Unarchived data.
@@ -275,7 +296,7 @@ it might not be archived with Zlib or compressed with Deflate at all.
-
Archives data into Zlib archive.
+
Archives data into Zlib archive.
Data will be also compressed with Deflate algorithm.
It will also be specified in archive’s header that the compressor used the slowest Deflate algorithm.
@@ -324,7 +345,7 @@ It will also be specified in archive’s header that the compressor used the
Resulting archive’s data.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Compression.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Compression.html
index 521d454f..93ac1f35 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Compression.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Compression.html
@@ -84,6 +84,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -96,19 +99,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -131,22 +149,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -211,7 +232,7 @@
@@ -246,7 +267,7 @@
@@ -281,7 +302,7 @@
@@ -316,7 +337,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Containers.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Containers.html
index 9aca31f2..b53812a7 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Containers.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Containers.html
@@ -84,6 +84,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -96,19 +99,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -131,22 +149,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -188,9 +209,9 @@
@@ -198,20 +219,20 @@
-
Provides open function for ZIP containers.
+
Provides open functions for 7-Zip containers.
-
See more
+
See more
@@ -223,9 +244,9 @@
@@ -233,20 +254,55 @@
-
Represents either a file or directory entry in ZIP container.
+
Represents an entry in 7-Zip container.
-
See more
+
See more
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Provides information about 7-Zip entry.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public struct SevenZipEntryInfo
+
+
+
+
@@ -281,7 +337,7 @@
@@ -316,7 +372,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Provides open function for ZIP containers.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public class ZipContainer : Container
+
+
+
+
+
+
+
+
+
+
@@ -253,7 +274,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -287,7 +308,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -321,7 +342,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -355,7 +376,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -389,7 +410,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -423,7 +444,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -457,7 +478,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -491,7 +512,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -526,7 +547,7 @@ Associated value of the error contains already decompressed data.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html
index e636f345..81b45388 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
@@ -253,7 +274,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
@@ -287,7 +308,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
@@ -321,7 +342,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html
index d01cc672..130dd82b 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either archive is damaged or it might not be GZip archive a
@@ -253,7 +274,7 @@ It may indicate that either archive is damaged or it might not be GZip archive a
@@ -288,7 +309,7 @@ that archive uses a newer version of GZip format.
@@ -322,7 +343,7 @@ that archive uses a newer version of GZip format.
@@ -357,7 +378,7 @@ Associated value of the error contains already decompressed data.
@@ -391,7 +412,7 @@ Associated value of the error contains already decompressed data.
@@ -425,7 +446,7 @@ Associated value of the error contains already decompressed data.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html
index 2cdbab12..d07c68ab 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -253,7 +274,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -287,7 +308,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -321,7 +342,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -356,7 +377,7 @@ amount of compressed data read is different from the one stored in LZMA2 packet.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html
index b123e567..dce9345a 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -253,7 +274,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -287,7 +308,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -321,7 +342,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -355,7 +376,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -389,7 +410,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -423,7 +444,7 @@ It may indicate that either data is damaged or it might not be compressed with L
@@ -457,7 +478,7 @@ It may indicate that either data is damaged or it might not be compressed with L
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/SevenZipError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/SevenZipError.html
new file mode 100644
index 00000000..685e92a7
--- /dev/null
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/SevenZipError.html
@@ -0,0 +1,638 @@
+
+
+
+ SevenZipError Enum Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ SevenZipError Enum Reference
+
+
+
+
+
+
+
+
+
+
+
SevenZipError
+
+
+
public enum SevenZipError : Error
+
+
+
+
Represents an error, which happened during processing 7-Zip container.
+It may indicate that either container is damaged or it might not be 7-Zip container at all.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Wrong container’s signature.
+
+
+
+
Declaration
+
+
Swift
+
case wrongSignature
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Unsupporte version of container’s format.
+
+
+
+
Declaration
+
+
Swift
+
case wrongFormatVersion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CRC either of one of the files from the container
+or one of the container’s strucutures is incorrect.
+
+
+
+
Declaration
+
+
Swift
+
case wrongCRC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Size either of one of the files from the container
+or one of the container’s strucutures is incorrect.
+
+
+
+
Declaration
+
+
Swift
+
case wrongSize
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Files have StartPos property. This feature isn’t supported.
+
+
+
+
Declaration
+
+
Swift
+
case startPosNotSupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
External feature isn’t supported.
+
+
+
+
Declaration
+
+
Swift
+
case externalNotSupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Coders with multiple in and/or out streams aren’t supported.
+
+
+
+
Declaration
+
+
Swift
+
case multiStreamNotSupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Additional streams feature isn’t supported.
+
+
+
+
Declaration
+
+
Swift
+
case additionalStreamsNotSupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry is compressed using unsupported compression method.
+
+
+
+
Declaration
+
+
Swift
+
case compressionNotSupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry or container’s header is encrypted. This feature isn’t supported.
+
+
+
+
Declaration
+
+
Swift
+
case encryptionNotSupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s data isn’t available.
+
+
+
+
Declaration
+
+
Swift
+
case dataIsUnavailable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Unknown/incorrect internal 7-Zip structure was encountered or
+no internal structure was found where it must be.
+
+
+
+
Declaration
+
+
Swift
+
case internalStructureError
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html
index 09096368..d1731f31 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either container is damaged or it might not be TAR containe
@@ -253,7 +274,7 @@ It may indicate that either container is damaged or it might not be TAR containe
@@ -287,7 +308,7 @@ It may indicate that either container is damaged or it might not be TAR containe
@@ -321,7 +342,7 @@ It may indicate that either container is damaged or it might not be TAR containe
@@ -355,7 +376,7 @@ It may indicate that either container is damaged or it might not be TAR containe
@@ -389,7 +410,7 @@ It may indicate that either container is damaged or it might not be TAR containe
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html
index 403c9e4d..5b8fdd1a 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either archive is damaged or it might not be XZ archive at
@@ -253,7 +274,7 @@ It may indicate that either archive is damaged or it might not be XZ archive at
@@ -288,7 +309,7 @@ that archive uses a newer version of XZ format.
@@ -322,7 +343,7 @@ that archive uses a newer version of XZ format.
@@ -356,7 +377,7 @@ that archive uses a newer version of XZ format.
@@ -390,7 +411,7 @@ that archive uses a newer version of XZ format.
@@ -425,7 +446,7 @@ amount of compressed data read is different from the one stored in archive.
@@ -460,7 +481,7 @@ Associated value of the error contains already decompressed data.
@@ -494,7 +515,7 @@ Associated value of the error contains already decompressed data.
@@ -528,7 +549,7 @@ Associated value of the error contains already decompressed data.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html
index ec9230da..0363f329 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -253,7 +274,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -287,7 +308,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -321,7 +342,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -355,7 +376,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -389,7 +410,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -423,7 +444,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -457,7 +478,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -491,7 +512,7 @@ It may indicate that either container is damaged or it might not be ZIP containe
@@ -526,7 +547,7 @@ Associated value of the error contains entry’s data.
@@ -560,7 +581,7 @@ Associated value of the error contains entry’s data.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html
index 9dfa2b82..5af46e36 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@ It may indicate that either archive is damaged or it might not be Zlib archive a
@@ -253,7 +274,7 @@ It may indicate that either archive is damaged or it might not be Zlib archive a
@@ -287,7 +308,7 @@ It may indicate that either archive is damaged or it might not be Zlib archive a
@@ -321,7 +342,7 @@ It may indicate that either archive is damaged or it might not be Zlib archive a
@@ -356,7 +377,7 @@ Associated value of the error contains already decompressed data.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Errors.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Errors.html
index 8aba76a1..f1408cfa 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Errors.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Errors.html
@@ -84,6 +84,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -96,19 +99,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -131,22 +149,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -212,7 +233,7 @@ It may indicate that either data is damaged or it might not be compressed with B
@@ -248,79 +269,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Represents an error, which happened during processing GZip archive.
-It may indicate that either archive is damaged or it might not be GZip archive at all.
-
-
See more
-
-
-
Declaration
-
-
Swift
-
public enum GzipError : Error
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Represents an error, which happened during LZMA2 decompression.
-It may indicate that either data is damaged or it might not be compressed with LZMA2 at all.
-
-
See more
-
-
-
Declaration
-
-
Swift
-
public enum LZMA2Error : Error
-
-
-
-
@@ -356,7 +305,79 @@ It may indicate that either data is damaged or it might not be compressed with L
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents an error, which happened during LZMA2 decompression.
+It may indicate that either data is damaged or it might not be compressed with LZMA2 at all.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public enum LZMA2Error : Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents an error, which happened during processing 7-Zip container.
+It may indicate that either container is damaged or it might not be 7-Zip container at all.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public enum SevenZipError : Error
+
+
+
+
@@ -399,43 +420,7 @@ It may indicate that either container is damaged or it might not be TAR containe
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Represents an error, which happened during unarchiving XZ archive.
-It may indicate that either archive is damaged or it might not be XZ archive at all.
-
-
See more
-
-
-
Declaration
-
-
Swift
-
public enum XZError : Error
-
-
-
-
@@ -471,7 +456,79 @@ It may indicate that either container is damaged or it might not be ZIP containe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents an error, which happened during processing GZip archive.
+It may indicate that either archive is damaged or it might not be GZip archive at all.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public enum GzipError : Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents an error, which happened during unarchiving XZ archive.
+It may indicate that either archive is damaged or it might not be XZ archive at all.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public enum XZError : Error
+
+
+
+
@@ -507,7 +564,7 @@ It may indicate that either archive is damaged or it might not be Zlib archive a
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html
index 485111bb..6a226ed3 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html
@@ -84,6 +84,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -96,19 +99,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -131,22 +149,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -211,7 +232,7 @@
@@ -242,7 +263,7 @@
@@ -273,7 +294,7 @@
@@ -304,7 +325,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html
index 9eb2c704..c234031c 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html
index 7db7fa00..67cb930c 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html
index 37460921..757ab349 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
@@ -248,7 +269,7 @@
@@ -266,7 +287,7 @@
-
Check if entry is a directory.
+
True, if entry is a directory.
@@ -278,7 +299,67 @@
+
+
+
+
+
+
+
+
+
+
+
True, if entry is a symbolic link.
+
+
+
+
Declaration
+
+
Swift
+
var isLink : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Path to a linked file for symbolic link entry.
+
+
+
+
Declaration
+
+
Swift
+
var linkPath : String ?
+
+
+
+
@@ -314,7 +395,7 @@
@@ -344,7 +425,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html
index f6a8c7b7..6a9d331c 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html
index f8c38add..9dafc6eb 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@
@@ -250,7 +271,7 @@
@@ -280,7 +301,7 @@
@@ -312,7 +333,7 @@ then this property is nil.
@@ -342,7 +363,7 @@ then this property is nil.
@@ -372,7 +393,7 @@ then this property is nil.
@@ -402,7 +423,7 @@ then this property is nil.
@@ -432,7 +453,7 @@ then this property is nil.
@@ -489,7 +510,7 @@ it might not be archived with GZip at all.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/CompressionMethod.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/CompressionMethod.html
index 25266d0f..227717ee 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/CompressionMethod.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/CompressionMethod.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/FileSystemType.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/FileSystemType.html
index 15a6aaa8..33e686af 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/FileSystemType.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/FileSystemType.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -223,7 +244,7 @@
@@ -257,7 +278,7 @@
@@ -291,7 +312,7 @@
@@ -325,7 +346,7 @@
@@ -359,7 +380,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo.html
new file mode 100644
index 00000000..236e5f9c
--- /dev/null
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo.html
@@ -0,0 +1,745 @@
+
+
+
+ SevenZipEntryInfo Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ SevenZipEntryInfo Struct Reference
+
+
+
+
+
+
+
+
+
+
+
SevenZipEntryInfo
+
+
+
public struct SevenZipEntryInfo
+
+
+
+
Provides information about 7-Zip entry.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents file access permissions in UNIX format.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public struct Permissions : OptionSet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents file attributes in DOS format.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public struct DosAttributes : OptionSet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents file type in UNIX format.
+
+
See more
+
+
+
Declaration
+
+
Swift
+
public enum UnixType : UInt32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public let name : String ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public let size : Int ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True, if entry is a directory.
+
+
+
+
Declaration
+
+
Swift
+
public let isDirectory : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s last access time and date.
+
+
+
+
Declaration
+
+
Swift
+
public let accessTime : Date ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s creation time and date.
+
+
+
+
Declaration
+
+
Swift
+
public let creationTime : Date ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s last modification time and date.
+
+
+
+
Declaration
+
+
Swift
+
public let modificationTime : Date ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
7-Zip internal property which may contain UNIX permissions, type and/or DOS attributes.
+
+
+
+
Declaration
+
+
Swift
+
public let winAttributes : UInt32 ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s UNIX file access permissions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s DOS attributes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Entry’s UNIX file type.
+
+
+
+
Declaration
+
+
Swift
+
public let unixType : UnixType ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
7-Zip internal propety. Indicates whether entry has a stream (data) inside container.
+
+
+
+
Declaration
+
+
Swift
+
public let hasStream : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True, if entry is an empty file. 7-Zip internal property.
+
+
+
+
Declaration
+
+
Swift
+
public let isEmpty : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True if entry is an anti-file.
+Used in differential backups to indicate that file should be deleted.
+7-Zip internal property.
+
+
+
+
Declaration
+
+
Swift
+
public let isAnti : Bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CRC32 of entry’s data.
+
+
+
+
Declaration
+
+
Swift
+
public let crc : UInt32 ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo/DosAttributes.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo/DosAttributes.html
new file mode 100644
index 00000000..a9d50f4f
--- /dev/null
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo/DosAttributes.html
@@ -0,0 +1,470 @@
+
+
+
+ DosAttributes Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ DosAttributes Struct Reference
+
+
+
+
+
+
+
+
+
+
+
DosAttributes
+
+
+
public struct DosAttributes : OptionSet
+
+
+
+
Represents file attributes in DOS format.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Raw bit flags value.
+
+
+
+
Declaration
+
+
Swift
+
public let rawValue : UInt32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Initializes attributes with bit flags.
+
+
+
+
Declaration
+
+
Swift
+
public init ( rawValue : UInt32 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
File is archive or archived.
+
+
+
+
Declaration
+
+
Swift
+
public static let archive = DosAttributes ( rawValue : 0b00100000 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
File is a directory.
+
+
+
+
Declaration
+
+
Swift
+
public static let directory = DosAttributes ( rawValue : 0b00010000 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let volume = DosAttributes ( rawValue : 0b00001000 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
File is a system file.
+
+
+
+
Declaration
+
+
Swift
+
public static let system = DosAttributes ( rawValue : 0b00000100 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let hidden = DosAttributes ( rawValue : 0b00000010 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let readOnly = DosAttributes ( rawValue : 0b00000001 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo/Permissions.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo/Permissions.html
new file mode 100644
index 00000000..1e309e9b
--- /dev/null
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo/Permissions.html
@@ -0,0 +1,650 @@
+
+
+
+ Permissions Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ Permissions Struct Reference
+
+
+
+
+
+
+
+
+
+
+
Permissions
+
+
+
public struct Permissions : OptionSet
+
+
+
+
Represents file access permissions in UNIX format.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Raw bit flags value (in decimal).
+
+
+
+
Declaration
+
+
Swift
+
public let rawValue : UInt32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Initializes permissions with bit flags in decimal.
+
+
+
+
Declaration
+
+
Swift
+
public init ( rawValue : UInt32 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let setuid = Permissions ( rawValue : 0 o4000 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let setgid = Permissions ( rawValue : 0 o2000 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let sticky = Permissions ( rawValue : 0 o1000 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let readOwner = Permissions ( rawValue : 0 o0400 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let writeOwner = Permissions ( rawValue : 0 o0200 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let executeOwner = Permissions ( rawValue : 0 o0100 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let readGroup = Permissions ( rawValue : 0 o0040 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let writeGroup = Permissions ( rawValue : 0 o0020 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let executeGroup = Permissions ( rawValue : 0 o0010 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let readOther = Permissions ( rawValue : 0 o0004 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
public static let writeOther = Permissions ( rawValue : 0 o0002 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Others can execute.
+
+
+
+
Declaration
+
+
Swift
+
public static let executeOther = Permissions ( rawValue : 0 o0001 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo/UnixType.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo/UnixType.html
new file mode 100644
index 00000000..b15690ef
--- /dev/null
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo/UnixType.html
@@ -0,0 +1,464 @@
+
+
+
+ UnixType Enum Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SWCompression Reference
+
+ UnixType Enum Reference
+
+
+
+
+
+
+
+
+
+
+
UnixType
+
+
+
public enum UnixType : UInt32
+
+
+
+
Represents file type in UNIX format.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
case fifo = 0 o010000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Character special file.
+
+
+
+
Declaration
+
+
Swift
+
case characterSpecial = 0 o020000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
case directory = 0 o040000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Block special file.
+
+
+
+
Declaration
+
+
Swift
+
case blockSpecial = 0 o060000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
case regular = 0 o100000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
case symbolicLink = 0 o120000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Declaration
+
+
Swift
+
case socket = 0 o140000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html
index f5be602a..32bba4c3 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -219,7 +240,7 @@
@@ -250,7 +271,7 @@
@@ -280,7 +301,7 @@
@@ -310,7 +331,7 @@
@@ -340,7 +361,7 @@
@@ -397,7 +418,7 @@ it might not be archived with Zlib at all.
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionLevel.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionLevel.html
index b90a15be..3215bc97 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionLevel.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionLevel.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
@@ -252,7 +273,7 @@
@@ -286,7 +307,7 @@
@@ -320,7 +341,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionMethod.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionMethod.html
index 104b27e1..b63100ce 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionMethod.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionMethod.html
@@ -85,6 +85,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -97,19 +100,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -132,22 +150,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -218,7 +239,7 @@
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html
index e34c3c87..49328b59 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html
@@ -84,6 +84,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -96,19 +99,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -131,22 +149,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -183,7 +204,7 @@
-
+
@@ -213,6 +234,7 @@ And yes, it is also in Objective-C.
Decompression algorithms:
@@ -257,6 +279,7 @@ Available subspecs:
SWCompression/BZip2
SWCompression/ZIP
SWCompression/TAR
+SWCompression/SevenZip
You can add some or all of them instead of pod 'SWCompression'
@@ -285,17 +308,41 @@ Available subspecs:
More info about SPM you can find at Swift Package Manager’s Documentation .
-SWCompression/ZIP and compression methods
+Options for CocoaPods users
-Deflate is a default compression method of ZIP containers.
+Both ZIP and 7-Zip containers have compression method
+which is most likely to be used when compressing files into them.
+This is Deflate for ZIP and LZMA/LZMA2 for 7-Zip.
+Thus, SWCompression/ZIP subspec have SWCompression/Deflate subspec as a dependency
+and SWCompression/LZMA subspec as a dependency for SWCompression/SevenZip.
-This means, that if you use CocoaPods, when installing SWCompression/ZIP it will install SWCompression/Deflate as a dependency.
+But both these containers support other compression methods,
+some of them are implemented in SWCompression.
+For CocoaPods configurations some sort of ‘optional dependecies’ are provided for such compression methods.
-However, ZIP containers can also support LZMA and BZip2.
-So if you want to enable them in your Pods configuration you need to include SWCompression/LZMA and/or SWCompression/Deflate.
+‘Optional dependency’ in this context means
+that SWCompression/ZIP or SWCompression/7-Zip will support particular compression methods
+only if a corresponding subspec is expicitly specified in your Podfile and installed.
-If you use Carthage or Swift Package Manager you always have the full package,
-and ZIP will be built with both BZip2 and LZMA support.
+List of ‘optional dependecies’.
+
+For SWCompression/ZIP:
+
+
+SWCompression/BZip2
+SWCompression/LZMA
+
+
+For SWCompression/SevenZip:
+
+
+SWCompression/BZip2
+SWCompression/Deflate
+
+
+Note: If you use Carthage or Swift Package Manager you always have the full package,
+and ZIP will be built with both additional BZip2 and LZMA support
+as well as 7-Zip will be build with both additional Deflate and BZip2 support.
Usage
Basics
@@ -322,7 +369,7 @@ This documentation can be found at its own Wikipedia article about TAR
Pax specification
Basic TAR specification
+Apache Commons Compress
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/search.json b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/search.json
index b4c2e00e..8c1e188e 100644
--- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/search.json
+++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/search.json
@@ -1 +1 @@
-{"Protocols/DecompressionAlgorithm.html#/s:ZFP13SWCompression22DecompressionAlgorithm10decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompress data compressed with particular algorithm.
","parent_name":"DecompressionAlgorithm"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry4nameSS":{"name":"name","abstract":"Retrieve name of the entry from the container.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry4sizeSi":{"name":"size","abstract":"Retrieve size of the entry’s data from the container.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry11isDirectorySb":{"name":"isDirectory","abstract":"Check if entry is a directory.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"Provides a dictionary with various attributes of the entry.","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:FP13SWCompression14ContainerEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"
Retrieve entry’s data from the container.
","parent_name":"ContainerEntry"},"Protocols/Container.html#/s:ZFP13SWCompression9Container4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Retrieve all the entries from the container.
","parent_name":"Container"},"Protocols/Archive.html#/s:ZFP13SWCompression7Archive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchive data from the archive.
","parent_name":"Archive"},"Protocols/Archive.html":{"name":"Archive","abstract":"A type that represents an archive.
"},"Protocols/Container.html":{"name":"Container","abstract":"A type that represents a container of files, directories and/or other data.
"},"Protocols/ContainerEntry.html":{"name":"ContainerEntry","abstract":"A type that represents an entry from a container (file or directory) with attributes.
"},"Protocols/DecompressionAlgorithm.html":{"name":"DecompressionAlgorithm","abstract":"A type that provides an implementation of a particular decompression algorithm.
"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError22wrongCompressionMethodFMS0_S0_":{"name":"wrongCompressionMethod","abstract":"Compression method used in archive is different from Deflate, which is the only supported one.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError20wrongCompressionInfoFMS0_S0_":{"name":"wrongCompressionInfo","abstract":"Compression info has value incompatible with Deflate compression method.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError11wrongFcheckFMS0_S0_":{"name":"wrongFcheck","abstract":"First two bytes of archive’s flags are inconsistent with each other.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError21wrongCompressionLevelFMS0_S0_":{"name":"wrongCompressionLevel","abstract":"Compression level has value, which is different from the supported ones.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError12wrongAdler32FMS0_FV10Foundation4DataS0_":{"name":"wrongAdler32","abstract":"Computed checksum of uncompressed data doesn’t match the value stored in archive.","parent_name":"ZlibError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError27notFoundCentralDirectoryEndFMS0_S0_":{"name":"notFoundCentralDirectoryEnd","abstract":"
End of Central Directoty record wasn’t found.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14wrongSignatureFMS0_S0_":{"name":"wrongSignature","abstract":"Wrong signature of one of container’s structures.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError9wrongSizeFMS0_S0_":{"name":"wrongSize","abstract":"Wrong either compressed or uncompressed size of a container’s entry.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError12wrongVersionFMS0_S0_":{"name":"wrongVersion","abstract":"Version needed to process container is unsupported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError24multiVolumesNotSupportedFMS0_S0_":{"name":"multiVolumesNotSupported","abstract":"Container is either spanned or consists of several volumes. These features aren’t supported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError22encryptionNotSupportedFMS0_S0_":{"name":"encryptionNotSupported","abstract":"Entry or record is encrypted. This feature isn’t supported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError20patchingNotSupportedFMS0_S0_":{"name":"patchingNotSupported","abstract":"Entry contains patched data. This feature isn’t supported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError23compressionNotSupportedFMS0_S0_":{"name":"compressionNotSupported","abstract":"Entry is compressed using unsupported compression method.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError16wrongLocalHeaderFMS0_S0_":{"name":"wrongLocalHeader","abstract":"Local header of an entry is inconsistent with Central Directory.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError10wrongCRC32FMS0_FV10Foundation4DataS0_":{"name":"wrongCRC32","abstract":"Computed checksum of entry’s data doesn’t match the value stored in container.","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14wrongTextFieldFMS0_S0_":{"name":"wrongTextField","abstract":"
Either entry’s comment or file name cannot be processed using UTF-8 encoding.
","parent_name":"ZipError"},"Enums/XZError.html#/s:FO13SWCompression7XZError10wrongMagicFMS0_S0_":{"name":"wrongMagic","abstract":"Either ‘magic’ number in header or footer isn’t equal to a predefined value.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError15wrongFieldValueFMS0_S0_":{"name":"wrongFieldValue","abstract":"One of the fields in archive has an incorrect value.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError18fieldReservedValueFMS0_S0_":{"name":"fieldReservedValue","abstract":"One of the reserved fields in archive has an unexpected value, which can also mean (apart from damaged archive),","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12wrongInfoCRCFMS0_S0_":{"name":"wrongInfoCRC","abstract":"
Checksum of one of the fields of archive doesn’t match the value stored in archive.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13wrongFilterIDFMS0_S0_":{"name":"wrongFilterID","abstract":"Filter used in archvie is unsupported.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError15checkTypeSHA256FMS0_S0_":{"name":"checkTypeSHA256","abstract":"Archive uses SHA-256 checksum which is unsupported.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13wrongDataSizeFMS0_S0_":{"name":"wrongDataSize","abstract":"Either size of decompressed data isn’t equal to the one specified in archive or","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError10wrongCheckFMS0_FV10Foundation4DataS0_":{"name":"wrongCheck","abstract":"
Computed checksum of uncompressed data doesn’t match the value stored in the archive.","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12wrongPaddingFMS0_S0_":{"name":"wrongPadding","abstract":"
Padding (null-bytes appended to an archive’s structure) is incorrect.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError21multiByteIntegerErrorFMS0_S0_":{"name":"multiByteIntegerError","abstract":"Either null byte encountered or exceeded maximum amount bytes during reading multi byte number.
","parent_name":"XZError"},"Enums/TarError.html#/s:FO13SWCompression8TarError20tooSmallFileIsPassedFMS0_S0_":{"name":"tooSmallFileIsPassed","abstract":"Size of data is too small, even to contain only one header.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError16fieldIsNotNumberFMS0_S0_":{"name":"fieldIsNotNumber","abstract":"Failed to process a field as a number.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError19wrongHeaderChecksumFMS0_S0_":{"name":"wrongHeaderChecksum","abstract":"Computed checksum of a header doesn’t match the value stored in container.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError17wrongUstarVersionFMS0_S0_":{"name":"wrongUstarVersion","abstract":"Unsupported version of USTAR format.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError19wrongPaxHeaderEntryFMS0_S0_":{"name":"wrongPaxHeaderEntry","abstract":"Entry from PAX extended header is in incorrect format.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError14notAsciiStringFMS0_S0_":{"name":"notAsciiString","abstract":"Failed to process a field as an ASCII string.
","parent_name":"TarError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError15wrongPropertiesFMS0_S0_":{"name":"wrongProperties","abstract":"Properties’ byte is greater than 225.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError21rangeDecoderInitErrorFMS0_S0_":{"name":"rangeDecoderInitError","abstract":"Unable to initialize RanderDecorer.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError24exceededUncompressedSizeFMS0_S0_":{"name":"exceededUncompressedSize","abstract":"Size of uncompressed data hit specified limit in the middle of decoding.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError13windowIsEmptyFMS0_S0_":{"name":"windowIsEmpty","abstract":"Unable to perfrom repeat-distance decoding because there is nothing to repeat.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError23rangeDecoderFinishErrorFMS0_S0_":{"name":"rangeDecoderFinishError","abstract":"End of stream marker is reached, but range decoder is in incorrect state.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError16repeatWillExceedFMS0_S0_":{"name":"repeatWillExceed","abstract":"The number of bytes to repeat is greater than the amount bytes that is left to decode.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError17notEnoughToRepeatFMS0_S0_":{"name":"notEnoughToRepeat","abstract":"The amount of already decoded bytes is smaller than repeat length.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError23decoderIsNotInitialisedFMS0_S0_":{"name":"decoderIsNotInitialised","abstract":"LZMADecoder wasn’t properly initialized before decoding data.
","parent_name":"LZMAError"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error15wrongPropertiesFMS0_S0_":{"name":"wrongProperties","abstract":"Reserved bits of LZMA2 properties’ byte aren’t equal to zero.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error19wrongDictionarySizeFMS0_S0_":{"name":"wrongDictionarySize","abstract":"Dictionary size is too big.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error16wrongControlByteFMS0_S0_":{"name":"wrongControlByte","abstract":"Unknown conrol byte value of LZMA2 packet.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10wrongResetFMS0_S0_":{"name":"wrongReset","abstract":"Unknown reset instruction encountered in LZMA2 packet.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10wrongSizesFMS0_S0_":{"name":"wrongSizes","abstract":"Either size of decompressed data isn’t equal to the one specified in LZMA2 packet or","parent_name":"LZMA2Error"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10wrongMagicFMS0_S0_":{"name":"wrongMagic","abstract":"
First two bytes (‘magic’ number) of archive isn’t 31 and 139.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError22wrongCompressionMethodFMS0_S0_":{"name":"wrongCompressionMethod","abstract":"Compression method used in archive is different from Deflate, which is the only supported one.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10wrongFlagsFMS0_S0_":{"name":"wrongFlags","abstract":"One of the reserved fields in archive has an unexpected value, which can also mean (apart from damaged archive),","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError14wrongHeaderCRCFMS0_S0_":{"name":"wrongHeaderCRC","abstract":"
Computed CRC of archive’s header doesn’t match the value stored in archive.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError8wrongCRCFMS0_FV10Foundation4DataS0_":{"name":"wrongCRC","abstract":"Computed checksum of uncompressed data doesn’t match the value stored in archive.","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10wrongISizeFMS0_S0_":{"name":"wrongISize","abstract":"
Computed ‘isize’ didn’t match the value stored in the archive.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError21cannotEncodeISOLatin1FMS0_S0_":{"name":"cannotEncodeISOLatin1","abstract":"Either specified file name or comment cannot be encoded using ISO Latin-1 encoding.
","parent_name":"GzipError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError29wrongUncompressedBlockLengthsFMS0_S0_":{"name":"wrongUncompressedBlockLengths","abstract":"Uncompressed block’s length and nlength bytes isn’t consistent with each other.
","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14wrongBlockTypeFMS0_S0_":{"name":"wrongBlockType","abstract":"Unknown block type (not 0, 1 or 2).
","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError11wrongSymbolFMS0_S0_":{"name":"wrongSymbol","abstract":"Decoded symbol was found in Huffman tree but is unknown.
","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14symbolNotFoundFMS0_S0_":{"name":"symbolNotFound","abstract":"Symbol wasn’t found in Huffman tree.
","parent_name":"DeflateError"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error10wrongMagicFMS0_S0_":{"name":"wrongMagic","abstract":"‘Magic’ number is not 0x425a.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22wrongCompressionMethodFMS0_S0_":{"name":"wrongCompressionMethod","abstract":"Compression method is not type ‘h’ (not Huffman).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14wrongBlockSizeFMS0_S0_":{"name":"wrongBlockSize","abstract":"Unsupported block size (not from ‘0’ to ‘9’).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14wrongBlockTypeFMS0_S0_":{"name":"wrongBlockType","abstract":"Unsupported block type (is neither ‘pi’ nor ‘sqrt(pi)’).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error15randomizedBlockFMS0_S0_":{"name":"randomizedBlock","abstract":"Block is randomized.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error18wrongHuffmanGroupsFMS0_S0_":{"name":"wrongHuffmanGroups","abstract":"Wrong number of Huffman tables/groups (should be between 2 and 6).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error13wrongSelectorFMS0_S0_":{"name":"wrongSelector","abstract":"Selector is greater than the total number of Huffman tables/groups.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22wrongHuffmanLengthCodeFMS0_S0_":{"name":"wrongHuffmanLengthCode","abstract":"Wrong code of Huffman length (should be between 0 and 20).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14symbolNotFoundFMS0_S0_":{"name":"symbolNotFound","abstract":"Symbol wasn’t found in Huffman tree.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error8wrongCRCFMS0_FV10Foundation4DataS0_":{"name":"wrongCRC","abstract":"Computed checksum of uncompressed data doesn’t match the value stored in archive.","parent_name":"BZip2Error"},"Enums/BZip2Error.html":{"name":"BZip2Error","abstract":"
Represents an error, which happened during BZip2 decompression."},"Enums/DeflateError.html":{"name":"DeflateError","abstract":"
Represents an error, which happened during Deflate compression or decompression."},"Enums/GzipError.html":{"name":"GzipError","abstract":"
Represents an error, which happened during processing GZip archive."},"Enums/LZMA2Error.html":{"name":"LZMA2Error","abstract":"
Represents an error, which happened during LZMA2 decompression."},"Enums/LZMAError.html":{"name":"LZMAError","abstract":"
Represents an error, which happened during LZMA decompression."},"Enums/TarError.html":{"name":"TarError","abstract":"
Represents an error, which happened during processing TAR container."},"Enums/XZError.html":{"name":"XZError","abstract":"
Represents an error, which happened during unarchiving XZ archive."},"Enums/ZipError.html":{"name":"ZipError","abstract":"
Represents an error, which happened during processing ZIP container."},"Enums/ZlibError.html":{"name":"ZlibError","abstract":"
Represents an error, which happened during processing Zlib archive."},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType6normalFMS1_S1_":{"name":"normal","abstract":"
Normal file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType8hardLinkFMS1_S1_":{"name":"hardLink","abstract":"Hard linked entry.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType12symbolicLinkFMS1_S1_":{"name":"symbolicLink","abstract":"Symbolically linked entry.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType16characterSpecialFMS1_S1_":{"name":"characterSpecial","abstract":"Character special file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType12blockSpecialFMS1_S1_":{"name":"blockSpecial","abstract":"Block special file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType9directoryFMS1_S1_":{"name":"directory","abstract":"Directory.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType4fifoFMS1_S1_":{"name":"fifo","abstract":"FIFO special file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType10contiguousFMS1_S1_":{"name":"contiguous","abstract":"Contiguous file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType20globalExtendedHeaderFMS1_S1_":{"name":"globalExtendedHeader","abstract":"PAX global extended header. (Should not be encountered separately).
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType19localExtendedHeaderFMS1_S1_":{"name":"localExtendedHeader","abstract":"PAX local extended header. (Should not be encountered separately).
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType23vendorUnknownOrReservedFMS1_S1_":{"name":"vendorUnknownOrReserved","abstract":"Either unknown type, vendor specific or reserved value.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html":{"name":"EntryType","abstract":"Represents a type of an entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4nameSS":{"name":"name","abstract":"Name of the file or directory.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry11isDirectorySb":{"name":"isDirectory","abstract":"True, if an entry is a directory.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4sizeSi":{"name":"size","abstract":"Size of the data associated with the entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"Provides a dictionary with various attributes of the entry.","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4modeGSqSi_":{"name":"mode","abstract":"
File mode.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7ownerIDGSqSi_":{"name":"ownerID","abstract":"Owner’s ID.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7groupIDGSqSi_":{"name":"groupID","abstract":"Owner’s group ID.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry16modificationTimeV10Foundation4Date":{"name":"modificationTime","abstract":"The most recent modification time of the original file or directory.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4typeOS0_9EntryType":{"name":"type","abstract":"Type of entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry13ownerUserNameGSqSS_":{"name":"ownerUserName","abstract":"Owner’s user name.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry14ownerGroupNameGSqSS_":{"name":"ownerGroupName","abstract":"Owner’s group name.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry10accessTimeGSqV10Foundation4Date_":{"name":"accessTime","abstract":"The most recent access time of the original file or directory (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry12creationTimeGSqV10Foundation4Date_":{"name":"creationTime","abstract":"The creation time of the original file or directory (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7charsetGSqSS_":{"name":"charset","abstract":"Name of the character set used to encode entry’s data (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7commentGSqSS_":{"name":"comment","abstract":"Comment associated with the entry (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry8linkPathGSqSS_":{"name":"linkPath","abstract":"Path to a linked file.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry28unknownExtendedHeaderEntriesGVs10DictionarySSSS_":{"name":"unknownExtendedHeaderEntries","abstract":"Other entries from PAX extended headers.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:FC13SWCompression8TarEntry4dataFT_V10Foundation4Data":{"name":"data()","abstract":"Returns data associated with this entry.
","parent_name":"TarEntry"},"Classes/TarContainer.html#/s:ZFC13SWCompression12TarContainer4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Processes TAR container and returns an array of ContainerEntries (which are actually TarEntries).
","parent_name":"TarContainer"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry4nameSS":{"name":"name","abstract":"Name of the file or directory.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry7commentGSqSS_":{"name":"comment","abstract":"Comment associated with the entry.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry10attributesVs6UInt32":{"name":"attributes","abstract":"File or directory attributes related to the file system of the container’s creator.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry4sizeSi":{"name":"size","abstract":"Size of the data associated with the entry.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry11isDirectorySb":{"name":"isDirectory","abstract":"True, if an entry is a directory.","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"
Provides a dictionary with various attributes of the entry.","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:FC13SWCompression8ZipEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"
Returns data associated with this entry.
","parent_name":"ZipEntry"},"Classes/ZipContainer.html#/s:ZFC13SWCompression12ZipContainer4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Processes ZIP container and returns an array of ContainerEntries (which are actually ZipEntries).
","parent_name":"ZipContainer"},"Classes/ZipContainer.html":{"name":"ZipContainer","abstract":"Provides open function for ZIP containers.
"},"Classes/ZipEntry.html":{"name":"ZipEntry","abstract":"Represents either a file or directory entry in ZIP container.
"},"Classes/TarContainer.html":{"name":"TarContainer","abstract":"Provides open function for TAR containers.
"},"Classes/TarEntry.html":{"name":"TarEntry","abstract":"Represents either a file or directory entry in TAR container.
"},"Classes/XZArchive.html#/s:ZFC13SWCompression9XZArchive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchives XZ archive.
","parent_name":"XZArchive"},"Classes/XZArchive.html#/s:ZFC13SWCompression9XZArchive14multiUnarchiveFzT7archiveV10Foundation4Data_GSaS2__":{"name":"multiUnarchive(archive:)","abstract":"Unarchives XZ archive which contains one or more streams.
","parent_name":"XZArchive"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16fastestAlgorithmFMS1_S1_":{"name":"fastestAlgorithm","abstract":"Fastest algorithm.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13fastAlgorithmFMS1_S1_":{"name":"fastAlgorithm","abstract":"Fast algorithm.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16defaultAlgorithmFMS1_S1_":{"name":"defaultAlgorithm","abstract":"Default algorithm.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13slowAlgorithmFMS1_S1_":{"name":"slowAlgorithm","abstract":"Slowest algorithm but with maximum compression.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionMethod.html#/s:FOV13SWCompression10ZlibHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"The only one supported compression method (Deflate).
","parent_name":"CompressionMethod"},"Structs/ZlibHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"Supported compression methods in zlib archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader/CompressionLevel.html":{"name":"CompressionLevel","abstract":"Levels of compression which can be used to create Zlib archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"Compression method of archive. Currently, always equals to .deflate.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader16compressionLevelOS0_16CompressionLevel":{"name":"compressionLevel","abstract":"Level of compression used in archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader10windowSizeSi":{"name":"windowSize","abstract":"Size of ‘window’: moving interval of data which was used to make archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:FV13SWCompression10ZlibHeadercFzT7archiveV10Foundation4Data_S0_":{"name":"init(archive:)","abstract":"Initializes the structure with the values from Zlib archive.
","parent_name":"ZlibHeader"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchives Zlib archive.
","parent_name":"ZlibArchive"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive7archiveFzT4dataV10Foundation4Data_S2_":{"name":"archive(data:)","abstract":"Archives data into Zlib archive.","parent_name":"ZlibArchive"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4unixFMS1_S1_":{"name":"unix","abstract":"
One of many UNIX-like systems.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType9macintoshFMS1_S1_":{"name":"macintosh","abstract":"Older Macintosh systems.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4ntfsFMS1_S1_":{"name":"ntfs","abstract":"File system used in Microsoft™®© Windows™®©.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType7unknownFMS1_S1_":{"name":"unknown","abstract":"File system was unknown to the archiver.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType5otherFMS1_S1_":{"name":"other","abstract":"File system is one of the rare systems.
","parent_name":"FileSystemType"},"Structs/GzipHeader/CompressionMethod.html#/s:FOV13SWCompression10GzipHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"The only one supported compression method (Deflate).
","parent_name":"CompressionMethod"},"Structs/GzipHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"Supported compression methods in GZip archive.
","parent_name":"GzipHeader"},"Structs/GzipHeader/FileSystemType.html":{"name":"FileSystemType","abstract":"Type of file system on which GZip archive was created.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"Compression method of archive. Currently, always equals to .deflate.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader16modificationTimeGSqV10Foundation4Date_":{"name":"modificationTime","abstract":"The most recent modification time of the original file.","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader6osTypeOS0_14FileSystemType":{"name":"osType","abstract":"
Type of file system on which archivation took place.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader8fileNameGSqSS_":{"name":"fileName","abstract":"Name of the original file. If archive doesn’t contain file’s name, then nil.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader7commentGSqSS_":{"name":"comment","abstract":"Comment stored in archive. If archive doesn’t contain any comment, then nil.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader10isTextFileSb":{"name":"isTextFile","abstract":"Check if file is likely to be text file or ASCII-file.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:FV13SWCompression10GzipHeadercFzT7archiveV10Foundation4Data_S0_":{"name":"init(archive:)","abstract":"Initializes the structure with the values from the first ‘member’ of GZip archive.
","parent_name":"GzipHeader"},"Classes/GzipArchive/Member.html#/s:vVC13SWCompression11GzipArchive6Member6headerVS_10GzipHeader":{"name":"header","abstract":"GZip header of a member.
","parent_name":"Member"},"Classes/GzipArchive/Member.html#/s:vVC13SWCompression11GzipArchive6Member4dataV10Foundation4Data":{"name":"data","abstract":"Unarchived data from a member.
","parent_name":"Member"},"Classes/GzipArchive/Member.html":{"name":"Member","abstract":"Represents a member of multi-member of GZip archive.
","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchives GZip archive.
","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive14multiUnarchiveFzT7archiveV10Foundation4Data_GSaVS0_6Member_":{"name":"multiUnarchive(archive:)","abstract":"Unarchives multi-member GZip archive.","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive7archiveFzT4dataV10Foundation4Data7commentGSqSS_8fileNameGSqSS_14writeHeaderCRCSb10isTextFileSb6osTypeGSqOVS_10GzipHeader14FileSystemType_16modificationTimeGSqVS1_4Date__S2_":{"name":"archive(data:comment:fileName:writeHeaderCRC:isTextFile:osType:modificationTime:)","abstract":"
Archives data into GZip archive, using various specified options.","parent_name":"GzipArchive"},"Classes/GzipArchive.html":{"name":"GzipArchive","abstract":"
Provides unarchive and archive functions for GZip archives.
"},"Structs/GzipHeader.html":{"name":"GzipHeader","abstract":"Represents a GZip archive’s header.
"},"Classes/ZlibArchive.html":{"name":"ZlibArchive","abstract":"Provides unarchive and archive functions for Zlib archives.
"},"Structs/ZlibHeader.html":{"name":"ZlibHeader","abstract":"Represents a Zlib archive’s header.
"},"Classes/XZArchive.html":{"name":"XZArchive","abstract":"Provides unarchive function for XZ archives.
"},"Classes/LZMA2.html#/s:ZFC13SWCompression5LZMA210decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using LZMA2 algortihm.
","parent_name":"LZMA2"},"Classes/LZMA.html#/s:ZFC13SWCompression4LZMA10decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using LZMA algortihm.
","parent_name":"LZMA"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate10decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using Deflate algortihm.
","parent_name":"Deflate"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate8compressFzT4dataV10Foundation4Data_S2_":{"name":"compress(data:)","abstract":"Compresses data with Deflate algortihm.
","parent_name":"Deflate"},"Classes/BZip2.html#/s:ZFC13SWCompression5BZip210decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using BZip2 algortihm.
","parent_name":"BZip2"},"Classes/BZip2.html":{"name":"BZip2","abstract":"Provides decompression function for BZip2 algorithm.
"},"Classes/Deflate.html":{"name":"Deflate","abstract":"Provides compression and decompression functions for Deflate algorithm.
"},"Classes/LZMA.html":{"name":"LZMA","abstract":"Provides decompression function for LZMA algorithm.
"},"Classes/LZMA2.html":{"name":"LZMA2","abstract":"Provides decompression function for LZMA2 algorithm.
"},"Compression.html":{"name":"Compression"},"Archives.html":{"name":"Archives"},"Containers.html":{"name":"Containers"},"Errors.html":{"name":"Errors"},"Protocols.html":{"name":"Protocols"}}
\ No newline at end of file
+{"Protocols/DecompressionAlgorithm.html#/s:ZFP13SWCompression22DecompressionAlgorithm10decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompress data compressed with particular algorithm.
","parent_name":"DecompressionAlgorithm"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry4nameSS":{"name":"name","abstract":"Retrieve name of the entry from the container.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry4sizeSi":{"name":"size","abstract":"Retrieve size of the entry’s data from the container.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry11isDirectorySb":{"name":"isDirectory","abstract":"True, if entry is a directory.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry6isLinkSb":{"name":"isLink","abstract":"True, if entry is a symbolic link.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry8linkPathGSqSS_":{"name":"linkPath","abstract":"Path to a linked file for symbolic link entry.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"Provides a dictionary with various attributes of the entry.","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:FP13SWCompression14ContainerEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"
Retrieve entry’s data from the container.
","parent_name":"ContainerEntry"},"Protocols/Container.html#/s:ZFP13SWCompression9Container4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Retrieve all the entries from the container.
","parent_name":"Container"},"Protocols/Archive.html#/s:ZFP13SWCompression7Archive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchive data from the archive.
","parent_name":"Archive"},"Protocols/Archive.html":{"name":"Archive","abstract":"A type that represents an archive.
"},"Protocols/Container.html":{"name":"Container","abstract":"A type that represents a container of files, directories and/or other data.
"},"Protocols/ContainerEntry.html":{"name":"ContainerEntry","abstract":"A type that represents an entry from a container (file or directory) with attributes.
"},"Protocols/DecompressionAlgorithm.html":{"name":"DecompressionAlgorithm","abstract":"A type that provides an implementation of a particular decompression algorithm.
"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError22wrongCompressionMethodFMS0_S0_":{"name":"wrongCompressionMethod","abstract":"Compression method used in archive is different from Deflate, which is the only supported one.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError20wrongCompressionInfoFMS0_S0_":{"name":"wrongCompressionInfo","abstract":"Compression info has value incompatible with Deflate compression method.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError11wrongFcheckFMS0_S0_":{"name":"wrongFcheck","abstract":"First two bytes of archive’s flags are inconsistent with each other.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError21wrongCompressionLevelFMS0_S0_":{"name":"wrongCompressionLevel","abstract":"Compression level has value, which is different from the supported ones.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError12wrongAdler32FMS0_FV10Foundation4DataS0_":{"name":"wrongAdler32","abstract":"Computed checksum of uncompressed data doesn’t match the value stored in archive.","parent_name":"ZlibError"},"Enums/XZError.html#/s:FO13SWCompression7XZError10wrongMagicFMS0_S0_":{"name":"wrongMagic","abstract":"
Either ‘magic’ number in header or footer isn’t equal to a predefined value.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError15wrongFieldValueFMS0_S0_":{"name":"wrongFieldValue","abstract":"One of the fields in archive has an incorrect value.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError18fieldReservedValueFMS0_S0_":{"name":"fieldReservedValue","abstract":"One of the reserved fields in archive has an unexpected value, which can also mean (apart from damaged archive),","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12wrongInfoCRCFMS0_S0_":{"name":"wrongInfoCRC","abstract":"
Checksum of one of the fields of archive doesn’t match the value stored in archive.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13wrongFilterIDFMS0_S0_":{"name":"wrongFilterID","abstract":"Filter used in archvie is unsupported.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError15checkTypeSHA256FMS0_S0_":{"name":"checkTypeSHA256","abstract":"Archive uses SHA-256 checksum which is unsupported.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13wrongDataSizeFMS0_S0_":{"name":"wrongDataSize","abstract":"Either size of decompressed data isn’t equal to the one specified in archive or","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError10wrongCheckFMS0_FV10Foundation4DataS0_":{"name":"wrongCheck","abstract":"
Computed checksum of uncompressed data doesn’t match the value stored in the archive.","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12wrongPaddingFMS0_S0_":{"name":"wrongPadding","abstract":"
Padding (null-bytes appended to an archive’s structure) is incorrect.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError21multiByteIntegerErrorFMS0_S0_":{"name":"multiByteIntegerError","abstract":"Either null byte encountered or exceeded maximum amount bytes during reading multi byte number.
","parent_name":"XZError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10wrongMagicFMS0_S0_":{"name":"wrongMagic","abstract":"First two bytes (‘magic’ number) of archive isn’t 31 and 139.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError22wrongCompressionMethodFMS0_S0_":{"name":"wrongCompressionMethod","abstract":"Compression method used in archive is different from Deflate, which is the only supported one.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10wrongFlagsFMS0_S0_":{"name":"wrongFlags","abstract":"One of the reserved fields in archive has an unexpected value, which can also mean (apart from damaged archive),","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError14wrongHeaderCRCFMS0_S0_":{"name":"wrongHeaderCRC","abstract":"
Computed CRC of archive’s header doesn’t match the value stored in archive.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError8wrongCRCFMS0_FV10Foundation4DataS0_":{"name":"wrongCRC","abstract":"Computed checksum of uncompressed data doesn’t match the value stored in archive.","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10wrongISizeFMS0_S0_":{"name":"wrongISize","abstract":"
Computed ‘isize’ didn’t match the value stored in the archive.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError21cannotEncodeISOLatin1FMS0_S0_":{"name":"cannotEncodeISOLatin1","abstract":"Either specified file name or comment cannot be encoded using ISO Latin-1 encoding.
","parent_name":"GzipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError27notFoundCentralDirectoryEndFMS0_S0_":{"name":"notFoundCentralDirectoryEnd","abstract":"End of Central Directoty record wasn’t found.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14wrongSignatureFMS0_S0_":{"name":"wrongSignature","abstract":"Wrong signature of one of container’s structures.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError9wrongSizeFMS0_S0_":{"name":"wrongSize","abstract":"Wrong either compressed or uncompressed size of a container’s entry.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError12wrongVersionFMS0_S0_":{"name":"wrongVersion","abstract":"Version needed to process container is unsupported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError24multiVolumesNotSupportedFMS0_S0_":{"name":"multiVolumesNotSupported","abstract":"Container is either spanned or consists of several volumes. These features aren’t supported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError22encryptionNotSupportedFMS0_S0_":{"name":"encryptionNotSupported","abstract":"Entry or record is encrypted. This feature isn’t supported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError20patchingNotSupportedFMS0_S0_":{"name":"patchingNotSupported","abstract":"Entry contains patched data. This feature isn’t supported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError23compressionNotSupportedFMS0_S0_":{"name":"compressionNotSupported","abstract":"Entry is compressed using unsupported compression method.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError16wrongLocalHeaderFMS0_S0_":{"name":"wrongLocalHeader","abstract":"Local header of an entry is inconsistent with Central Directory.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError10wrongCRC32FMS0_FV10Foundation4DataS0_":{"name":"wrongCRC32","abstract":"Computed checksum of entry’s data doesn’t match the value stored in container.","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14wrongTextFieldFMS0_S0_":{"name":"wrongTextField","abstract":"
Either entry’s comment or file name cannot be processed using UTF-8 encoding.
","parent_name":"ZipError"},"Enums/TarError.html#/s:FO13SWCompression8TarError20tooSmallFileIsPassedFMS0_S0_":{"name":"tooSmallFileIsPassed","abstract":"Size of data is too small, even to contain only one header.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError16fieldIsNotNumberFMS0_S0_":{"name":"fieldIsNotNumber","abstract":"Failed to process a field as a number.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError19wrongHeaderChecksumFMS0_S0_":{"name":"wrongHeaderChecksum","abstract":"Computed checksum of a header doesn’t match the value stored in container.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError17wrongUstarVersionFMS0_S0_":{"name":"wrongUstarVersion","abstract":"Unsupported version of USTAR format.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError19wrongPaxHeaderEntryFMS0_S0_":{"name":"wrongPaxHeaderEntry","abstract":"Entry from PAX extended header is in incorrect format.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError14notAsciiStringFMS0_S0_":{"name":"notAsciiString","abstract":"Failed to process a field as an ASCII string.
","parent_name":"TarError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError14wrongSignatureFMS0_S0_":{"name":"wrongSignature","abstract":"Wrong container’s signature.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError18wrongFormatVersionFMS0_S0_":{"name":"wrongFormatVersion","abstract":"Unsupporte version of container’s format.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError8wrongCRCFMS0_S0_":{"name":"wrongCRC","abstract":"CRC either of one of the files from the container","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError9wrongSizeFMS0_S0_":{"name":"wrongSize","abstract":"
Size either of one of the files from the container","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError20startPosNotSupportedFMS0_S0_":{"name":"startPosNotSupported","abstract":"
Files have StartPos property. This feature isn’t supported.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError20externalNotSupportedFMS0_S0_":{"name":"externalNotSupported","abstract":"External feature isn’t supported.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError23multiStreamNotSupportedFMS0_S0_":{"name":"multiStreamNotSupported","abstract":"Coders with multiple in and/or out streams aren’t supported.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError29additionalStreamsNotSupportedFMS0_S0_":{"name":"additionalStreamsNotSupported","abstract":"Additional streams feature isn’t supported.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError23compressionNotSupportedFMS0_S0_":{"name":"compressionNotSupported","abstract":"Entry is compressed using unsupported compression method.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError22encryptionNotSupportedFMS0_S0_":{"name":"encryptionNotSupported","abstract":"Entry or container’s header is encrypted. This feature isn’t supported.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError17dataIsUnavailableFMS0_S0_":{"name":"dataIsUnavailable","abstract":"Entry’s data isn’t available.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError22internalStructureErrorFMS0_S0_":{"name":"internalStructureError","abstract":"Unknown/incorrect internal 7-Zip structure was encountered or","parent_name":"SevenZipError"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error15wrongPropertiesFMS0_S0_":{"name":"wrongProperties","abstract":"
Reserved bits of LZMA2 properties’ byte aren’t equal to zero.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error19wrongDictionarySizeFMS0_S0_":{"name":"wrongDictionarySize","abstract":"Dictionary size is too big.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error16wrongControlByteFMS0_S0_":{"name":"wrongControlByte","abstract":"Unknown conrol byte value of LZMA2 packet.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10wrongResetFMS0_S0_":{"name":"wrongReset","abstract":"Unknown reset instruction encountered in LZMA2 packet.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10wrongSizesFMS0_S0_":{"name":"wrongSizes","abstract":"Either size of decompressed data isn’t equal to the one specified in LZMA2 packet or","parent_name":"LZMA2Error"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError15wrongPropertiesFMS0_S0_":{"name":"wrongProperties","abstract":"
Properties’ byte is greater than 225.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError21rangeDecoderInitErrorFMS0_S0_":{"name":"rangeDecoderInitError","abstract":"Unable to initialize RanderDecorer.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError24exceededUncompressedSizeFMS0_S0_":{"name":"exceededUncompressedSize","abstract":"Size of uncompressed data hit specified limit in the middle of decoding.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError13windowIsEmptyFMS0_S0_":{"name":"windowIsEmpty","abstract":"Unable to perfrom repeat-distance decoding because there is nothing to repeat.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError23rangeDecoderFinishErrorFMS0_S0_":{"name":"rangeDecoderFinishError","abstract":"End of stream marker is reached, but range decoder is in incorrect state.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError16repeatWillExceedFMS0_S0_":{"name":"repeatWillExceed","abstract":"The number of bytes to repeat is greater than the amount bytes that is left to decode.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError17notEnoughToRepeatFMS0_S0_":{"name":"notEnoughToRepeat","abstract":"The amount of already decoded bytes is smaller than repeat length.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError23decoderIsNotInitialisedFMS0_S0_":{"name":"decoderIsNotInitialised","abstract":"LZMADecoder wasn’t properly initialized before decoding data.
","parent_name":"LZMAError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError29wrongUncompressedBlockLengthsFMS0_S0_":{"name":"wrongUncompressedBlockLengths","abstract":"Uncompressed block’s length and nlength bytes isn’t consistent with each other.
","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14wrongBlockTypeFMS0_S0_":{"name":"wrongBlockType","abstract":"Unknown block type (not 0, 1 or 2).
","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError11wrongSymbolFMS0_S0_":{"name":"wrongSymbol","abstract":"Decoded symbol was found in Huffman tree but is unknown.
","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14symbolNotFoundFMS0_S0_":{"name":"symbolNotFound","abstract":"Symbol wasn’t found in Huffman tree.
","parent_name":"DeflateError"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error10wrongMagicFMS0_S0_":{"name":"wrongMagic","abstract":"‘Magic’ number is not 0x425a.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22wrongCompressionMethodFMS0_S0_":{"name":"wrongCompressionMethod","abstract":"Compression method is not type ‘h’ (not Huffman).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14wrongBlockSizeFMS0_S0_":{"name":"wrongBlockSize","abstract":"Unsupported block size (not from ‘0’ to ‘9’).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14wrongBlockTypeFMS0_S0_":{"name":"wrongBlockType","abstract":"Unsupported block type (is neither ‘pi’ nor ‘sqrt(pi)’).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error15randomizedBlockFMS0_S0_":{"name":"randomizedBlock","abstract":"Block is randomized.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error18wrongHuffmanGroupsFMS0_S0_":{"name":"wrongHuffmanGroups","abstract":"Wrong number of Huffman tables/groups (should be between 2 and 6).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error13wrongSelectorFMS0_S0_":{"name":"wrongSelector","abstract":"Selector is greater than the total number of Huffman tables/groups.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22wrongHuffmanLengthCodeFMS0_S0_":{"name":"wrongHuffmanLengthCode","abstract":"Wrong code of Huffman length (should be between 0 and 20).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14symbolNotFoundFMS0_S0_":{"name":"symbolNotFound","abstract":"Symbol wasn’t found in Huffman tree.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error8wrongCRCFMS0_FV10Foundation4DataS0_":{"name":"wrongCRC","abstract":"Computed checksum of uncompressed data doesn’t match the value stored in archive.","parent_name":"BZip2Error"},"Enums/BZip2Error.html":{"name":"BZip2Error","abstract":"
Represents an error, which happened during BZip2 decompression."},"Enums/DeflateError.html":{"name":"DeflateError","abstract":"
Represents an error, which happened during Deflate compression or decompression."},"Enums/LZMAError.html":{"name":"LZMAError","abstract":"
Represents an error, which happened during LZMA decompression."},"Enums/LZMA2Error.html":{"name":"LZMA2Error","abstract":"
Represents an error, which happened during LZMA2 decompression."},"Enums/SevenZipError.html":{"name":"SevenZipError","abstract":"
Represents an error, which happened during processing 7-Zip container."},"Enums/TarError.html":{"name":"TarError","abstract":"
Represents an error, which happened during processing TAR container."},"Enums/ZipError.html":{"name":"ZipError","abstract":"
Represents an error, which happened during processing ZIP container."},"Enums/GzipError.html":{"name":"GzipError","abstract":"
Represents an error, which happened during processing GZip archive."},"Enums/XZError.html":{"name":"XZError","abstract":"
Represents an error, which happened during unarchiving XZ archive."},"Enums/ZlibError.html":{"name":"ZlibError","abstract":"
Represents an error, which happened during processing Zlib archive."},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry4nameSS":{"name":"name","abstract":"
Name of the file or directory.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry7commentGSqSS_":{"name":"comment","abstract":"Comment associated with the entry.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry10attributesVs6UInt32":{"name":"attributes","abstract":"File or directory attributes related to the file system of the container’s creator.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry4sizeSi":{"name":"size","abstract":"Size of the data associated with the entry.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry11isDirectorySb":{"name":"isDirectory","abstract":"True, if entry is a directory.","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry6isLinkSb":{"name":"isLink","abstract":"
True, if entry is a symbolic link.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry8linkPathGSqSS_":{"name":"linkPath","abstract":"Path to a linked file for symbolic link entry.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry10isTextFileSb":{"name":"isTextFile","abstract":"True if entry is likely to be text or ASCII file.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"Provides a dictionary with various attributes of the entry.","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:FC13SWCompression8ZipEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"
Returns data associated with this entry.
","parent_name":"ZipEntry"},"Classes/ZipContainer.html#/s:ZFC13SWCompression12ZipContainer4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Processes ZIP container and returns an array of ContainerEntry (which are actually ZipEntry ).
","parent_name":"ZipContainer"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType6normalFMS1_S1_":{"name":"normal","abstract":"Normal file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType8hardLinkFMS1_S1_":{"name":"hardLink","abstract":"Hard linked entry.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType12symbolicLinkFMS1_S1_":{"name":"symbolicLink","abstract":"Symbolically linked entry.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType16characterSpecialFMS1_S1_":{"name":"characterSpecial","abstract":"Character special file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType12blockSpecialFMS1_S1_":{"name":"blockSpecial","abstract":"Block special file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType9directoryFMS1_S1_":{"name":"directory","abstract":"Directory.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType4fifoFMS1_S1_":{"name":"fifo","abstract":"FIFO special file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType10contiguousFMS1_S1_":{"name":"contiguous","abstract":"Contiguous file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType20globalExtendedHeaderFMS1_S1_":{"name":"globalExtendedHeader","abstract":"PAX global extended header. (Should not be encountered separately).
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType19localExtendedHeaderFMS1_S1_":{"name":"localExtendedHeader","abstract":"PAX local extended header. (Should not be encountered separately).
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType23vendorUnknownOrReservedFMS1_S1_":{"name":"vendorUnknownOrReserved","abstract":"Either unknown type, vendor specific or reserved value.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html":{"name":"EntryType","abstract":"Represents a type of an entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4nameSS":{"name":"name","abstract":"Name of the file or directory.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry11isDirectorySb":{"name":"isDirectory","abstract":"True, if entry is a directory.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4sizeSi":{"name":"size","abstract":"Size of the data associated with the entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"Provides a dictionary with various attributes of the entry.","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4modeGSqSi_":{"name":"mode","abstract":"
File mode.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7ownerIDGSqSi_":{"name":"ownerID","abstract":"Owner’s ID.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7groupIDGSqSi_":{"name":"groupID","abstract":"Owner’s group ID.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry16modificationTimeV10Foundation4Date":{"name":"modificationTime","abstract":"The most recent modification time of the original file or directory.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4typeOS0_9EntryType":{"name":"type","abstract":"Type of entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry13ownerUserNameGSqSS_":{"name":"ownerUserName","abstract":"Owner’s user name.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry14ownerGroupNameGSqSS_":{"name":"ownerGroupName","abstract":"Owner’s group name.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry10accessTimeGSqV10Foundation4Date_":{"name":"accessTime","abstract":"The most recent access time of the original file or directory (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry12creationTimeGSqV10Foundation4Date_":{"name":"creationTime","abstract":"The creation time of the original file or directory (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7charsetGSqSS_":{"name":"charset","abstract":"Name of the character set used to encode entry’s data (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7commentGSqSS_":{"name":"comment","abstract":"Comment associated with the entry (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry6isLinkSb":{"name":"isLink","abstract":"True if entry is a symbolic link.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry8linkPathGSqSS_":{"name":"linkPath","abstract":"Path to a linked file for symbolic link entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry28unknownExtendedHeaderEntriesGVs10DictionarySSSS_":{"name":"unknownExtendedHeaderEntries","abstract":"Other entries from PAX extended headers.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:FC13SWCompression8TarEntry4dataFT_V10Foundation4Data":{"name":"data()","abstract":"Returns data associated with this entry.
","parent_name":"TarEntry"},"Classes/TarContainer.html#/s:ZFC13SWCompression12TarContainer4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Processes TAR container and returns an array of ContainerEntry (which are actually TarEntry ).
","parent_name":"TarContainer"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType4fifoFMS1_S1_":{"name":"fifo","abstract":"FIFO special file.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType16characterSpecialFMS1_S1_":{"name":"characterSpecial","abstract":"Character special file.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType9directoryFMS1_S1_":{"name":"directory","abstract":"Directory.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType12blockSpecialFMS1_S1_":{"name":"blockSpecial","abstract":"Block special file.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType7regularFMS1_S1_":{"name":"regular","abstract":"Regular file.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType12symbolicLinkFMS1_S1_":{"name":"symbolicLink","abstract":"Symbolic link.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType6socketFMS1_S1_":{"name":"socket","abstract":"Socket.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:vVV13SWCompression17SevenZipEntryInfo13DosAttributes8rawValueVs6UInt32":{"name":"rawValue","abstract":"Raw bit flags value.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:FVV13SWCompression17SevenZipEntryInfo13DosAttributescFT8rawValueVs6UInt32_S1_":{"name":"init(rawValue:)","abstract":"Initializes attributes with bit flags.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:ZvVV13SWCompression17SevenZipEntryInfo13DosAttributes7archiveS1_":{"name":"archive","abstract":"File is archive or archived.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:ZvVV13SWCompression17SevenZipEntryInfo13DosAttributes9directoryS1_":{"name":"directory","abstract":"File is a directory.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:ZvVV13SWCompression17SevenZipEntryInfo13DosAttributes6volumeS1_":{"name":"volume","abstract":"File is a volume.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:ZvVV13SWCompression17SevenZipEntryInfo13DosAttributes6systemS1_":{"name":"system","abstract":"File is a system file.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:ZvVV13SWCompression17SevenZipEntryInfo13DosAttributes6hiddenS1_":{"name":"hidden","abstract":"File is hidden.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:ZvVV13SWCompression17SevenZipEntryInfo13DosAttributes8readOnlyS1_":{"name":"readOnly","abstract":"File is read-only.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/Permissions.html#/s:vVV13SWCompression17SevenZipEntryInfo11Permissions8rawValueVs6UInt32":{"name":"rawValue","abstract":"Raw bit flags value (in decimal).
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:FVV13SWCompression17SevenZipEntryInfo11PermissionscFT8rawValueVs6UInt32_S1_":{"name":"init(rawValue:)","abstract":"Initializes permissions with bit flags in decimal.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions6setuidS1_":{"name":"setuid","abstract":"Set UID.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions6setgidS1_":{"name":"setgid","abstract":"Set GID.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions6stickyS1_":{"name":"sticky","abstract":"Sticky bit.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions9readOwnerS1_":{"name":"readOwner","abstract":"Owner can read.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions10writeOwnerS1_":{"name":"writeOwner","abstract":"Owner can write.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions12executeOwnerS1_":{"name":"executeOwner","abstract":"Owner can execute.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions9readGroupS1_":{"name":"readGroup","abstract":"Group can read.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions10writeGroupS1_":{"name":"writeGroup","abstract":"Group can write.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions12executeGroupS1_":{"name":"executeGroup","abstract":"Group can execute.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions9readOtherS1_":{"name":"readOther","abstract":"Others can read.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions10writeOtherS1_":{"name":"writeOther","abstract":"Others can write.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions12executeOtherS1_":{"name":"executeOther","abstract":"Others can execute.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html":{"name":"Permissions","abstract":"Represents file access permissions in UNIX format.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo/DosAttributes.html":{"name":"DosAttributes","abstract":"Represents file attributes in DOS format.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo/UnixType.html":{"name":"UnixType","abstract":"Represents file type in UNIX format.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo4nameGSqSS_":{"name":"name","abstract":"Entry’s name.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo4sizeGSqSi_":{"name":"size","abstract":"Entry’s data size.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo11isDirectorySb":{"name":"isDirectory","abstract":"True, if entry is a directory.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo10accessTimeGSqV10Foundation4Date_":{"name":"accessTime","abstract":"Entry’s last access time and date.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo12creationTimeGSqV10Foundation4Date_":{"name":"creationTime","abstract":"Entry’s creation time and date.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo16modificationTimeGSqV10Foundation4Date_":{"name":"modificationTime","abstract":"Entry’s last modification time and date.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo13winAttributesGSqVs6UInt32_":{"name":"winAttributes","abstract":"7-Zip internal property which may contain UNIX permissions, type and/or DOS attributes.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo11permissionsGSqVS0_11Permissions_":{"name":"permissions","abstract":"Entry’s UNIX file access permissions.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo13dosAttributesGSqVS0_13DosAttributes_":{"name":"dosAttributes","abstract":"Entry’s DOS attributes.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo8unixTypeGSqOS0_8UnixType_":{"name":"unixType","abstract":"Entry’s UNIX file type.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo9hasStreamSb":{"name":"hasStream","abstract":"7-Zip internal propety. Indicates whether entry has a stream (data) inside container.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo7isEmptySb":{"name":"isEmpty","abstract":"True, if entry is an empty file. 7-Zip internal property.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo6isAntiSb":{"name":"isAnti","abstract":"True if entry is an anti-file.","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo3crcGSqVs6UInt32_":{"name":"crc","abstract":"
CRC32 of entry’s data.
","parent_name":"SevenZipEntryInfo"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry4infoVS_17SevenZipEntryInfo":{"name":"info","abstract":"Various information about entry.
","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry4nameSS":{"name":"name","abstract":"Entry’s name.
","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry4sizeSi":{"name":"size","abstract":"Entry’s data size.
","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry11isDirectorySb":{"name":"isDirectory","abstract":"True, if entry is a directory.
","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry6isLinkSb":{"name":"isLink","abstract":"True, if entry is a symbolic link.
","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry8linkPathGSqSS_":{"name":"linkPath","abstract":"Path to a linked file for symbolic link entry.
","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"Provides a dictionary with various attributes of the entry.","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry15dataIsAvailableSb":{"name":"dataIsAvailable","abstract":"
True, if data for entry is available.","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:FC13SWCompression13SevenZipEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"
Returns data associated with this entry.
","parent_name":"SevenZipEntry"},"Classes/SevenZipContainer.html#/s:ZFC13SWCompression17SevenZipContainer4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Processes 7-Zip container and returns an array of ContainerEntry (which are actually SevenZipEntry ).
","parent_name":"SevenZipContainer"},"Classes/SevenZipContainer.html#/s:ZFC13SWCompression17SevenZipContainer4infoFzT9containerV10Foundation4Data_GSaVS_17SevenZipEntryInfo_":{"name":"info(container:)","abstract":"Processes ZIP container and returns an array of SevenZipEntryInfo ,","parent_name":"SevenZipContainer"},"Classes/SevenZipContainer.html":{"name":"SevenZipContainer","abstract":"
Provides open functions for 7-Zip containers.
"},"Classes/SevenZipEntry.html":{"name":"SevenZipEntry","abstract":"Represents an entry in 7-Zip container.
"},"Structs/SevenZipEntryInfo.html":{"name":"SevenZipEntryInfo","abstract":"Provides information about 7-Zip entry.
"},"Classes/TarContainer.html":{"name":"TarContainer","abstract":"Provides open function for TAR containers.
"},"Classes/TarEntry.html":{"name":"TarEntry","abstract":"Represents either a file or directory entry in TAR container.
"},"Classes/ZipContainer.html":{"name":"ZipContainer","abstract":"Provides open function for ZIP containers.
"},"Classes/ZipEntry.html":{"name":"ZipEntry","abstract":"Represents either a file or directory entry in ZIP container.
"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16fastestAlgorithmFMS1_S1_":{"name":"fastestAlgorithm","abstract":"Fastest algorithm.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13fastAlgorithmFMS1_S1_":{"name":"fastAlgorithm","abstract":"Fast algorithm.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16defaultAlgorithmFMS1_S1_":{"name":"defaultAlgorithm","abstract":"Default algorithm.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13slowAlgorithmFMS1_S1_":{"name":"slowAlgorithm","abstract":"Slowest algorithm but with maximum compression.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionMethod.html#/s:FOV13SWCompression10ZlibHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"The only one supported compression method (Deflate).
","parent_name":"CompressionMethod"},"Structs/ZlibHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"Supported compression methods in zlib archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader/CompressionLevel.html":{"name":"CompressionLevel","abstract":"Levels of compression which can be used to create Zlib archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"Compression method of archive. Currently, always equals to .deflate.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader16compressionLevelOS0_16CompressionLevel":{"name":"compressionLevel","abstract":"Level of compression used in archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader10windowSizeSi":{"name":"windowSize","abstract":"Size of ‘window’: moving interval of data which was used to make archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:FV13SWCompression10ZlibHeadercFzT7archiveV10Foundation4Data_S0_":{"name":"init(archive:)","abstract":"Initializes the structure with the values from Zlib archive.
","parent_name":"ZlibHeader"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchives Zlib archive.
","parent_name":"ZlibArchive"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive7archiveFzT4dataV10Foundation4Data_S2_":{"name":"archive(data:)","abstract":"Archives data into Zlib archive.","parent_name":"ZlibArchive"},"Classes/XZArchive.html#/s:ZFC13SWCompression9XZArchive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"
Unarchives XZ archive.
","parent_name":"XZArchive"},"Classes/XZArchive.html#/s:ZFC13SWCompression9XZArchive14multiUnarchiveFzT7archiveV10Foundation4Data_GSaS2__":{"name":"multiUnarchive(archive:)","abstract":"Unarchives XZ archive which contains one or more streams.
","parent_name":"XZArchive"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4unixFMS1_S1_":{"name":"unix","abstract":"One of many UNIX-like systems.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType9macintoshFMS1_S1_":{"name":"macintosh","abstract":"Older Macintosh systems.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4ntfsFMS1_S1_":{"name":"ntfs","abstract":"File system used in Microsoft™®© Windows™®©.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType7unknownFMS1_S1_":{"name":"unknown","abstract":"File system was unknown to the archiver.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType5otherFMS1_S1_":{"name":"other","abstract":"File system is one of the rare systems.
","parent_name":"FileSystemType"},"Structs/GzipHeader/CompressionMethod.html#/s:FOV13SWCompression10GzipHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"The only one supported compression method (Deflate).
","parent_name":"CompressionMethod"},"Structs/GzipHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"Supported compression methods in GZip archive.
","parent_name":"GzipHeader"},"Structs/GzipHeader/FileSystemType.html":{"name":"FileSystemType","abstract":"Type of file system on which GZip archive was created.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"Compression method of archive. Currently, always equals to .deflate.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader16modificationTimeGSqV10Foundation4Date_":{"name":"modificationTime","abstract":"The most recent modification time of the original file.","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader6osTypeOS0_14FileSystemType":{"name":"osType","abstract":"
Type of file system on which archivation took place.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader8fileNameGSqSS_":{"name":"fileName","abstract":"Name of the original file. If archive doesn’t contain file’s name, then nil.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader7commentGSqSS_":{"name":"comment","abstract":"Comment stored in archive. If archive doesn’t contain any comment, then nil.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader10isTextFileSb":{"name":"isTextFile","abstract":"Check if file is likely to be text file or ASCII-file.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:FV13SWCompression10GzipHeadercFzT7archiveV10Foundation4Data_S0_":{"name":"init(archive:)","abstract":"Initializes the structure with the values from the first ‘member’ of GZip archive.
","parent_name":"GzipHeader"},"Classes/GzipArchive/Member.html#/s:vVC13SWCompression11GzipArchive6Member6headerVS_10GzipHeader":{"name":"header","abstract":"GZip header of a member.
","parent_name":"Member"},"Classes/GzipArchive/Member.html#/s:vVC13SWCompression11GzipArchive6Member4dataV10Foundation4Data":{"name":"data","abstract":"Unarchived data from a member.
","parent_name":"Member"},"Classes/GzipArchive/Member.html":{"name":"Member","abstract":"Represents a member of multi-member of GZip archive.
","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchives GZip archive.
","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive14multiUnarchiveFzT7archiveV10Foundation4Data_GSaVS0_6Member_":{"name":"multiUnarchive(archive:)","abstract":"Unarchives multi-member GZip archive.","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive7archiveFzT4dataV10Foundation4Data7commentGSqSS_8fileNameGSqSS_14writeHeaderCRCSb10isTextFileSb6osTypeGSqOVS_10GzipHeader14FileSystemType_16modificationTimeGSqVS1_4Date__S2_":{"name":"archive(data:comment:fileName:writeHeaderCRC:isTextFile:osType:modificationTime:)","abstract":"
Archives data into GZip archive, using various specified options.","parent_name":"GzipArchive"},"Classes/GzipArchive.html":{"name":"GzipArchive","abstract":"
Provides unarchive and archive functions for GZip archives.
"},"Structs/GzipHeader.html":{"name":"GzipHeader","abstract":"Represents a GZip archive’s header.
"},"Classes/XZArchive.html":{"name":"XZArchive","abstract":"Provides unarchive function for XZ archives.
"},"Classes/ZlibArchive.html":{"name":"ZlibArchive","abstract":"Provides unarchive and archive functions for Zlib archives.
"},"Structs/ZlibHeader.html":{"name":"ZlibHeader","abstract":"Represents a Zlib archive’s header.
"},"Classes/LZMA2.html#/s:ZFC13SWCompression5LZMA210decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using LZMA2 algortihm.
","parent_name":"LZMA2"},"Classes/LZMA.html#/s:ZFC13SWCompression4LZMA10decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using LZMA algortihm.
","parent_name":"LZMA"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate10decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using Deflate algortihm.
","parent_name":"Deflate"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate8compressFzT4dataV10Foundation4Data_S2_":{"name":"compress(data:)","abstract":"Compresses data with Deflate algortihm.
","parent_name":"Deflate"},"Classes/BZip2.html#/s:ZFC13SWCompression5BZip210decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using BZip2 algortihm.
","parent_name":"BZip2"},"Classes/BZip2.html":{"name":"BZip2","abstract":"Provides decompression function for BZip2 algorithm.
"},"Classes/Deflate.html":{"name":"Deflate","abstract":"Provides compression and decompression functions for Deflate algorithm.
"},"Classes/LZMA.html":{"name":"LZMA","abstract":"Provides decompression function for LZMA algorithm.
"},"Classes/LZMA2.html":{"name":"LZMA2","abstract":"Provides decompression function for LZMA2 algorithm.
"},"Compression.html":{"name":"Compression"},"Archives.html":{"name":"Archives"},"Containers.html":{"name":"Containers"},"Errors.html":{"name":"Errors"},"Protocols.html":{"name":"Protocols"}}
\ No newline at end of file
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/docSet.dsidx b/docs/docsets/SWCompression.docset/Contents/Resources/docSet.dsidx
index e2ce9798..a4454485 100644
Binary files a/docs/docsets/SWCompression.docset/Contents/Resources/docSet.dsidx and b/docs/docsets/SWCompression.docset/Contents/Resources/docSet.dsidx differ
diff --git a/docs/docsets/SWCompression.tgz b/docs/docsets/SWCompression.tgz
index c481a9d1..1e55ccb6 100644
Binary files a/docs/docsets/SWCompression.tgz and b/docs/docsets/SWCompression.tgz differ
diff --git a/docs/index.html b/docs/index.html
index e34c3c87..49328b59 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -84,6 +84,9 @@
– FileSystemType
+
+ XZArchive
+
ZlibArchive
@@ -96,19 +99,28 @@
– CompressionLevel
-
- XZArchive
-
Containers
@@ -131,22 +149,25 @@
DeflateError
- GzipError
+ LZMAError
LZMA2Error
- LZMAError
+ SevenZipError
TarError
- XZError
+ ZipError
- ZipError
+ GzipError
+
+
+ XZError
ZlibError
@@ -183,7 +204,7 @@
-
+
@@ -213,6 +234,7 @@ And yes, it is also in Objective-C.
Decompression algorithms:
@@ -257,6 +279,7 @@ Available subspecs:
SWCompression/BZip2
SWCompression/ZIP
SWCompression/TAR
+SWCompression/SevenZip
You can add some or all of them instead of pod 'SWCompression'
@@ -285,17 +308,41 @@ Available subspecs:
More info about SPM you can find at Swift Package Manager’s Documentation .
-SWCompression/ZIP and compression methods
+Options for CocoaPods users
-Deflate is a default compression method of ZIP containers.
+Both ZIP and 7-Zip containers have compression method
+which is most likely to be used when compressing files into them.
+This is Deflate for ZIP and LZMA/LZMA2 for 7-Zip.
+Thus, SWCompression/ZIP subspec have SWCompression/Deflate subspec as a dependency
+and SWCompression/LZMA subspec as a dependency for SWCompression/SevenZip.
-This means, that if you use CocoaPods, when installing SWCompression/ZIP it will install SWCompression/Deflate as a dependency.
+But both these containers support other compression methods,
+some of them are implemented in SWCompression.
+For CocoaPods configurations some sort of ‘optional dependecies’ are provided for such compression methods.
-However, ZIP containers can also support LZMA and BZip2.
-So if you want to enable them in your Pods configuration you need to include SWCompression/LZMA and/or SWCompression/Deflate.
+‘Optional dependency’ in this context means
+that SWCompression/ZIP or SWCompression/7-Zip will support particular compression methods
+only if a corresponding subspec is expicitly specified in your Podfile and installed.
-If you use Carthage or Swift Package Manager you always have the full package,
-and ZIP will be built with both BZip2 and LZMA support.
+List of ‘optional dependecies’.
+
+For SWCompression/ZIP:
+
+
+SWCompression/BZip2
+SWCompression/LZMA
+
+
+For SWCompression/SevenZip:
+
+
+SWCompression/BZip2
+SWCompression/Deflate
+
+
+Note: If you use Carthage or Swift Package Manager you always have the full package,
+and ZIP will be built with both additional BZip2 and LZMA support
+as well as 7-Zip will be build with both additional Deflate and BZip2 support.
Usage
Basics
@@ -322,7 +369,7 @@ This documentation can be found at its own Wikipedia article about TAR
Pax specification
Basic TAR specification
+Apache Commons Compress
diff --git a/docs/search.json b/docs/search.json
index b4c2e00e..8c1e188e 100644
--- a/docs/search.json
+++ b/docs/search.json
@@ -1 +1 @@
-{"Protocols/DecompressionAlgorithm.html#/s:ZFP13SWCompression22DecompressionAlgorithm10decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompress data compressed with particular algorithm.
","parent_name":"DecompressionAlgorithm"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry4nameSS":{"name":"name","abstract":"Retrieve name of the entry from the container.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry4sizeSi":{"name":"size","abstract":"Retrieve size of the entry’s data from the container.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry11isDirectorySb":{"name":"isDirectory","abstract":"Check if entry is a directory.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"Provides a dictionary with various attributes of the entry.","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:FP13SWCompression14ContainerEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"
Retrieve entry’s data from the container.
","parent_name":"ContainerEntry"},"Protocols/Container.html#/s:ZFP13SWCompression9Container4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Retrieve all the entries from the container.
","parent_name":"Container"},"Protocols/Archive.html#/s:ZFP13SWCompression7Archive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchive data from the archive.
","parent_name":"Archive"},"Protocols/Archive.html":{"name":"Archive","abstract":"A type that represents an archive.
"},"Protocols/Container.html":{"name":"Container","abstract":"A type that represents a container of files, directories and/or other data.
"},"Protocols/ContainerEntry.html":{"name":"ContainerEntry","abstract":"A type that represents an entry from a container (file or directory) with attributes.
"},"Protocols/DecompressionAlgorithm.html":{"name":"DecompressionAlgorithm","abstract":"A type that provides an implementation of a particular decompression algorithm.
"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError22wrongCompressionMethodFMS0_S0_":{"name":"wrongCompressionMethod","abstract":"Compression method used in archive is different from Deflate, which is the only supported one.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError20wrongCompressionInfoFMS0_S0_":{"name":"wrongCompressionInfo","abstract":"Compression info has value incompatible with Deflate compression method.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError11wrongFcheckFMS0_S0_":{"name":"wrongFcheck","abstract":"First two bytes of archive’s flags are inconsistent with each other.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError21wrongCompressionLevelFMS0_S0_":{"name":"wrongCompressionLevel","abstract":"Compression level has value, which is different from the supported ones.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError12wrongAdler32FMS0_FV10Foundation4DataS0_":{"name":"wrongAdler32","abstract":"Computed checksum of uncompressed data doesn’t match the value stored in archive.","parent_name":"ZlibError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError27notFoundCentralDirectoryEndFMS0_S0_":{"name":"notFoundCentralDirectoryEnd","abstract":"
End of Central Directoty record wasn’t found.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14wrongSignatureFMS0_S0_":{"name":"wrongSignature","abstract":"Wrong signature of one of container’s structures.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError9wrongSizeFMS0_S0_":{"name":"wrongSize","abstract":"Wrong either compressed or uncompressed size of a container’s entry.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError12wrongVersionFMS0_S0_":{"name":"wrongVersion","abstract":"Version needed to process container is unsupported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError24multiVolumesNotSupportedFMS0_S0_":{"name":"multiVolumesNotSupported","abstract":"Container is either spanned or consists of several volumes. These features aren’t supported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError22encryptionNotSupportedFMS0_S0_":{"name":"encryptionNotSupported","abstract":"Entry or record is encrypted. This feature isn’t supported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError20patchingNotSupportedFMS0_S0_":{"name":"patchingNotSupported","abstract":"Entry contains patched data. This feature isn’t supported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError23compressionNotSupportedFMS0_S0_":{"name":"compressionNotSupported","abstract":"Entry is compressed using unsupported compression method.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError16wrongLocalHeaderFMS0_S0_":{"name":"wrongLocalHeader","abstract":"Local header of an entry is inconsistent with Central Directory.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError10wrongCRC32FMS0_FV10Foundation4DataS0_":{"name":"wrongCRC32","abstract":"Computed checksum of entry’s data doesn’t match the value stored in container.","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14wrongTextFieldFMS0_S0_":{"name":"wrongTextField","abstract":"
Either entry’s comment or file name cannot be processed using UTF-8 encoding.
","parent_name":"ZipError"},"Enums/XZError.html#/s:FO13SWCompression7XZError10wrongMagicFMS0_S0_":{"name":"wrongMagic","abstract":"Either ‘magic’ number in header or footer isn’t equal to a predefined value.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError15wrongFieldValueFMS0_S0_":{"name":"wrongFieldValue","abstract":"One of the fields in archive has an incorrect value.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError18fieldReservedValueFMS0_S0_":{"name":"fieldReservedValue","abstract":"One of the reserved fields in archive has an unexpected value, which can also mean (apart from damaged archive),","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12wrongInfoCRCFMS0_S0_":{"name":"wrongInfoCRC","abstract":"
Checksum of one of the fields of archive doesn’t match the value stored in archive.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13wrongFilterIDFMS0_S0_":{"name":"wrongFilterID","abstract":"Filter used in archvie is unsupported.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError15checkTypeSHA256FMS0_S0_":{"name":"checkTypeSHA256","abstract":"Archive uses SHA-256 checksum which is unsupported.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13wrongDataSizeFMS0_S0_":{"name":"wrongDataSize","abstract":"Either size of decompressed data isn’t equal to the one specified in archive or","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError10wrongCheckFMS0_FV10Foundation4DataS0_":{"name":"wrongCheck","abstract":"
Computed checksum of uncompressed data doesn’t match the value stored in the archive.","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12wrongPaddingFMS0_S0_":{"name":"wrongPadding","abstract":"
Padding (null-bytes appended to an archive’s structure) is incorrect.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError21multiByteIntegerErrorFMS0_S0_":{"name":"multiByteIntegerError","abstract":"Either null byte encountered or exceeded maximum amount bytes during reading multi byte number.
","parent_name":"XZError"},"Enums/TarError.html#/s:FO13SWCompression8TarError20tooSmallFileIsPassedFMS0_S0_":{"name":"tooSmallFileIsPassed","abstract":"Size of data is too small, even to contain only one header.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError16fieldIsNotNumberFMS0_S0_":{"name":"fieldIsNotNumber","abstract":"Failed to process a field as a number.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError19wrongHeaderChecksumFMS0_S0_":{"name":"wrongHeaderChecksum","abstract":"Computed checksum of a header doesn’t match the value stored in container.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError17wrongUstarVersionFMS0_S0_":{"name":"wrongUstarVersion","abstract":"Unsupported version of USTAR format.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError19wrongPaxHeaderEntryFMS0_S0_":{"name":"wrongPaxHeaderEntry","abstract":"Entry from PAX extended header is in incorrect format.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError14notAsciiStringFMS0_S0_":{"name":"notAsciiString","abstract":"Failed to process a field as an ASCII string.
","parent_name":"TarError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError15wrongPropertiesFMS0_S0_":{"name":"wrongProperties","abstract":"Properties’ byte is greater than 225.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError21rangeDecoderInitErrorFMS0_S0_":{"name":"rangeDecoderInitError","abstract":"Unable to initialize RanderDecorer.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError24exceededUncompressedSizeFMS0_S0_":{"name":"exceededUncompressedSize","abstract":"Size of uncompressed data hit specified limit in the middle of decoding.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError13windowIsEmptyFMS0_S0_":{"name":"windowIsEmpty","abstract":"Unable to perfrom repeat-distance decoding because there is nothing to repeat.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError23rangeDecoderFinishErrorFMS0_S0_":{"name":"rangeDecoderFinishError","abstract":"End of stream marker is reached, but range decoder is in incorrect state.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError16repeatWillExceedFMS0_S0_":{"name":"repeatWillExceed","abstract":"The number of bytes to repeat is greater than the amount bytes that is left to decode.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError17notEnoughToRepeatFMS0_S0_":{"name":"notEnoughToRepeat","abstract":"The amount of already decoded bytes is smaller than repeat length.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError23decoderIsNotInitialisedFMS0_S0_":{"name":"decoderIsNotInitialised","abstract":"LZMADecoder wasn’t properly initialized before decoding data.
","parent_name":"LZMAError"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error15wrongPropertiesFMS0_S0_":{"name":"wrongProperties","abstract":"Reserved bits of LZMA2 properties’ byte aren’t equal to zero.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error19wrongDictionarySizeFMS0_S0_":{"name":"wrongDictionarySize","abstract":"Dictionary size is too big.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error16wrongControlByteFMS0_S0_":{"name":"wrongControlByte","abstract":"Unknown conrol byte value of LZMA2 packet.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10wrongResetFMS0_S0_":{"name":"wrongReset","abstract":"Unknown reset instruction encountered in LZMA2 packet.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10wrongSizesFMS0_S0_":{"name":"wrongSizes","abstract":"Either size of decompressed data isn’t equal to the one specified in LZMA2 packet or","parent_name":"LZMA2Error"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10wrongMagicFMS0_S0_":{"name":"wrongMagic","abstract":"
First two bytes (‘magic’ number) of archive isn’t 31 and 139.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError22wrongCompressionMethodFMS0_S0_":{"name":"wrongCompressionMethod","abstract":"Compression method used in archive is different from Deflate, which is the only supported one.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10wrongFlagsFMS0_S0_":{"name":"wrongFlags","abstract":"One of the reserved fields in archive has an unexpected value, which can also mean (apart from damaged archive),","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError14wrongHeaderCRCFMS0_S0_":{"name":"wrongHeaderCRC","abstract":"
Computed CRC of archive’s header doesn’t match the value stored in archive.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError8wrongCRCFMS0_FV10Foundation4DataS0_":{"name":"wrongCRC","abstract":"Computed checksum of uncompressed data doesn’t match the value stored in archive.","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10wrongISizeFMS0_S0_":{"name":"wrongISize","abstract":"
Computed ‘isize’ didn’t match the value stored in the archive.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError21cannotEncodeISOLatin1FMS0_S0_":{"name":"cannotEncodeISOLatin1","abstract":"Either specified file name or comment cannot be encoded using ISO Latin-1 encoding.
","parent_name":"GzipError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError29wrongUncompressedBlockLengthsFMS0_S0_":{"name":"wrongUncompressedBlockLengths","abstract":"Uncompressed block’s length and nlength bytes isn’t consistent with each other.
","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14wrongBlockTypeFMS0_S0_":{"name":"wrongBlockType","abstract":"Unknown block type (not 0, 1 or 2).
","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError11wrongSymbolFMS0_S0_":{"name":"wrongSymbol","abstract":"Decoded symbol was found in Huffman tree but is unknown.
","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14symbolNotFoundFMS0_S0_":{"name":"symbolNotFound","abstract":"Symbol wasn’t found in Huffman tree.
","parent_name":"DeflateError"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error10wrongMagicFMS0_S0_":{"name":"wrongMagic","abstract":"‘Magic’ number is not 0x425a.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22wrongCompressionMethodFMS0_S0_":{"name":"wrongCompressionMethod","abstract":"Compression method is not type ‘h’ (not Huffman).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14wrongBlockSizeFMS0_S0_":{"name":"wrongBlockSize","abstract":"Unsupported block size (not from ‘0’ to ‘9’).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14wrongBlockTypeFMS0_S0_":{"name":"wrongBlockType","abstract":"Unsupported block type (is neither ‘pi’ nor ‘sqrt(pi)’).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error15randomizedBlockFMS0_S0_":{"name":"randomizedBlock","abstract":"Block is randomized.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error18wrongHuffmanGroupsFMS0_S0_":{"name":"wrongHuffmanGroups","abstract":"Wrong number of Huffman tables/groups (should be between 2 and 6).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error13wrongSelectorFMS0_S0_":{"name":"wrongSelector","abstract":"Selector is greater than the total number of Huffman tables/groups.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22wrongHuffmanLengthCodeFMS0_S0_":{"name":"wrongHuffmanLengthCode","abstract":"Wrong code of Huffman length (should be between 0 and 20).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14symbolNotFoundFMS0_S0_":{"name":"symbolNotFound","abstract":"Symbol wasn’t found in Huffman tree.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error8wrongCRCFMS0_FV10Foundation4DataS0_":{"name":"wrongCRC","abstract":"Computed checksum of uncompressed data doesn’t match the value stored in archive.","parent_name":"BZip2Error"},"Enums/BZip2Error.html":{"name":"BZip2Error","abstract":"
Represents an error, which happened during BZip2 decompression."},"Enums/DeflateError.html":{"name":"DeflateError","abstract":"
Represents an error, which happened during Deflate compression or decompression."},"Enums/GzipError.html":{"name":"GzipError","abstract":"
Represents an error, which happened during processing GZip archive."},"Enums/LZMA2Error.html":{"name":"LZMA2Error","abstract":"
Represents an error, which happened during LZMA2 decompression."},"Enums/LZMAError.html":{"name":"LZMAError","abstract":"
Represents an error, which happened during LZMA decompression."},"Enums/TarError.html":{"name":"TarError","abstract":"
Represents an error, which happened during processing TAR container."},"Enums/XZError.html":{"name":"XZError","abstract":"
Represents an error, which happened during unarchiving XZ archive."},"Enums/ZipError.html":{"name":"ZipError","abstract":"
Represents an error, which happened during processing ZIP container."},"Enums/ZlibError.html":{"name":"ZlibError","abstract":"
Represents an error, which happened during processing Zlib archive."},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType6normalFMS1_S1_":{"name":"normal","abstract":"
Normal file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType8hardLinkFMS1_S1_":{"name":"hardLink","abstract":"Hard linked entry.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType12symbolicLinkFMS1_S1_":{"name":"symbolicLink","abstract":"Symbolically linked entry.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType16characterSpecialFMS1_S1_":{"name":"characterSpecial","abstract":"Character special file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType12blockSpecialFMS1_S1_":{"name":"blockSpecial","abstract":"Block special file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType9directoryFMS1_S1_":{"name":"directory","abstract":"Directory.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType4fifoFMS1_S1_":{"name":"fifo","abstract":"FIFO special file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType10contiguousFMS1_S1_":{"name":"contiguous","abstract":"Contiguous file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType20globalExtendedHeaderFMS1_S1_":{"name":"globalExtendedHeader","abstract":"PAX global extended header. (Should not be encountered separately).
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType19localExtendedHeaderFMS1_S1_":{"name":"localExtendedHeader","abstract":"PAX local extended header. (Should not be encountered separately).
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType23vendorUnknownOrReservedFMS1_S1_":{"name":"vendorUnknownOrReserved","abstract":"Either unknown type, vendor specific or reserved value.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html":{"name":"EntryType","abstract":"Represents a type of an entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4nameSS":{"name":"name","abstract":"Name of the file or directory.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry11isDirectorySb":{"name":"isDirectory","abstract":"True, if an entry is a directory.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4sizeSi":{"name":"size","abstract":"Size of the data associated with the entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"Provides a dictionary with various attributes of the entry.","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4modeGSqSi_":{"name":"mode","abstract":"
File mode.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7ownerIDGSqSi_":{"name":"ownerID","abstract":"Owner’s ID.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7groupIDGSqSi_":{"name":"groupID","abstract":"Owner’s group ID.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry16modificationTimeV10Foundation4Date":{"name":"modificationTime","abstract":"The most recent modification time of the original file or directory.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4typeOS0_9EntryType":{"name":"type","abstract":"Type of entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry13ownerUserNameGSqSS_":{"name":"ownerUserName","abstract":"Owner’s user name.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry14ownerGroupNameGSqSS_":{"name":"ownerGroupName","abstract":"Owner’s group name.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry10accessTimeGSqV10Foundation4Date_":{"name":"accessTime","abstract":"The most recent access time of the original file or directory (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry12creationTimeGSqV10Foundation4Date_":{"name":"creationTime","abstract":"The creation time of the original file or directory (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7charsetGSqSS_":{"name":"charset","abstract":"Name of the character set used to encode entry’s data (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7commentGSqSS_":{"name":"comment","abstract":"Comment associated with the entry (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry8linkPathGSqSS_":{"name":"linkPath","abstract":"Path to a linked file.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry28unknownExtendedHeaderEntriesGVs10DictionarySSSS_":{"name":"unknownExtendedHeaderEntries","abstract":"Other entries from PAX extended headers.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:FC13SWCompression8TarEntry4dataFT_V10Foundation4Data":{"name":"data()","abstract":"Returns data associated with this entry.
","parent_name":"TarEntry"},"Classes/TarContainer.html#/s:ZFC13SWCompression12TarContainer4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Processes TAR container and returns an array of ContainerEntries (which are actually TarEntries).
","parent_name":"TarContainer"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry4nameSS":{"name":"name","abstract":"Name of the file or directory.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry7commentGSqSS_":{"name":"comment","abstract":"Comment associated with the entry.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry10attributesVs6UInt32":{"name":"attributes","abstract":"File or directory attributes related to the file system of the container’s creator.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry4sizeSi":{"name":"size","abstract":"Size of the data associated with the entry.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry11isDirectorySb":{"name":"isDirectory","abstract":"True, if an entry is a directory.","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"
Provides a dictionary with various attributes of the entry.","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:FC13SWCompression8ZipEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"
Returns data associated with this entry.
","parent_name":"ZipEntry"},"Classes/ZipContainer.html#/s:ZFC13SWCompression12ZipContainer4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Processes ZIP container and returns an array of ContainerEntries (which are actually ZipEntries).
","parent_name":"ZipContainer"},"Classes/ZipContainer.html":{"name":"ZipContainer","abstract":"Provides open function for ZIP containers.
"},"Classes/ZipEntry.html":{"name":"ZipEntry","abstract":"Represents either a file or directory entry in ZIP container.
"},"Classes/TarContainer.html":{"name":"TarContainer","abstract":"Provides open function for TAR containers.
"},"Classes/TarEntry.html":{"name":"TarEntry","abstract":"Represents either a file or directory entry in TAR container.
"},"Classes/XZArchive.html#/s:ZFC13SWCompression9XZArchive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchives XZ archive.
","parent_name":"XZArchive"},"Classes/XZArchive.html#/s:ZFC13SWCompression9XZArchive14multiUnarchiveFzT7archiveV10Foundation4Data_GSaS2__":{"name":"multiUnarchive(archive:)","abstract":"Unarchives XZ archive which contains one or more streams.
","parent_name":"XZArchive"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16fastestAlgorithmFMS1_S1_":{"name":"fastestAlgorithm","abstract":"Fastest algorithm.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13fastAlgorithmFMS1_S1_":{"name":"fastAlgorithm","abstract":"Fast algorithm.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16defaultAlgorithmFMS1_S1_":{"name":"defaultAlgorithm","abstract":"Default algorithm.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13slowAlgorithmFMS1_S1_":{"name":"slowAlgorithm","abstract":"Slowest algorithm but with maximum compression.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionMethod.html#/s:FOV13SWCompression10ZlibHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"The only one supported compression method (Deflate).
","parent_name":"CompressionMethod"},"Structs/ZlibHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"Supported compression methods in zlib archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader/CompressionLevel.html":{"name":"CompressionLevel","abstract":"Levels of compression which can be used to create Zlib archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"Compression method of archive. Currently, always equals to .deflate.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader16compressionLevelOS0_16CompressionLevel":{"name":"compressionLevel","abstract":"Level of compression used in archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader10windowSizeSi":{"name":"windowSize","abstract":"Size of ‘window’: moving interval of data which was used to make archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:FV13SWCompression10ZlibHeadercFzT7archiveV10Foundation4Data_S0_":{"name":"init(archive:)","abstract":"Initializes the structure with the values from Zlib archive.
","parent_name":"ZlibHeader"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchives Zlib archive.
","parent_name":"ZlibArchive"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive7archiveFzT4dataV10Foundation4Data_S2_":{"name":"archive(data:)","abstract":"Archives data into Zlib archive.","parent_name":"ZlibArchive"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4unixFMS1_S1_":{"name":"unix","abstract":"
One of many UNIX-like systems.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType9macintoshFMS1_S1_":{"name":"macintosh","abstract":"Older Macintosh systems.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4ntfsFMS1_S1_":{"name":"ntfs","abstract":"File system used in Microsoft™®© Windows™®©.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType7unknownFMS1_S1_":{"name":"unknown","abstract":"File system was unknown to the archiver.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType5otherFMS1_S1_":{"name":"other","abstract":"File system is one of the rare systems.
","parent_name":"FileSystemType"},"Structs/GzipHeader/CompressionMethod.html#/s:FOV13SWCompression10GzipHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"The only one supported compression method (Deflate).
","parent_name":"CompressionMethod"},"Structs/GzipHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"Supported compression methods in GZip archive.
","parent_name":"GzipHeader"},"Structs/GzipHeader/FileSystemType.html":{"name":"FileSystemType","abstract":"Type of file system on which GZip archive was created.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"Compression method of archive. Currently, always equals to .deflate.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader16modificationTimeGSqV10Foundation4Date_":{"name":"modificationTime","abstract":"The most recent modification time of the original file.","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader6osTypeOS0_14FileSystemType":{"name":"osType","abstract":"
Type of file system on which archivation took place.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader8fileNameGSqSS_":{"name":"fileName","abstract":"Name of the original file. If archive doesn’t contain file’s name, then nil.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader7commentGSqSS_":{"name":"comment","abstract":"Comment stored in archive. If archive doesn’t contain any comment, then nil.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader10isTextFileSb":{"name":"isTextFile","abstract":"Check if file is likely to be text file or ASCII-file.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:FV13SWCompression10GzipHeadercFzT7archiveV10Foundation4Data_S0_":{"name":"init(archive:)","abstract":"Initializes the structure with the values from the first ‘member’ of GZip archive.
","parent_name":"GzipHeader"},"Classes/GzipArchive/Member.html#/s:vVC13SWCompression11GzipArchive6Member6headerVS_10GzipHeader":{"name":"header","abstract":"GZip header of a member.
","parent_name":"Member"},"Classes/GzipArchive/Member.html#/s:vVC13SWCompression11GzipArchive6Member4dataV10Foundation4Data":{"name":"data","abstract":"Unarchived data from a member.
","parent_name":"Member"},"Classes/GzipArchive/Member.html":{"name":"Member","abstract":"Represents a member of multi-member of GZip archive.
","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchives GZip archive.
","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive14multiUnarchiveFzT7archiveV10Foundation4Data_GSaVS0_6Member_":{"name":"multiUnarchive(archive:)","abstract":"Unarchives multi-member GZip archive.","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive7archiveFzT4dataV10Foundation4Data7commentGSqSS_8fileNameGSqSS_14writeHeaderCRCSb10isTextFileSb6osTypeGSqOVS_10GzipHeader14FileSystemType_16modificationTimeGSqVS1_4Date__S2_":{"name":"archive(data:comment:fileName:writeHeaderCRC:isTextFile:osType:modificationTime:)","abstract":"
Archives data into GZip archive, using various specified options.","parent_name":"GzipArchive"},"Classes/GzipArchive.html":{"name":"GzipArchive","abstract":"
Provides unarchive and archive functions for GZip archives.
"},"Structs/GzipHeader.html":{"name":"GzipHeader","abstract":"Represents a GZip archive’s header.
"},"Classes/ZlibArchive.html":{"name":"ZlibArchive","abstract":"Provides unarchive and archive functions for Zlib archives.
"},"Structs/ZlibHeader.html":{"name":"ZlibHeader","abstract":"Represents a Zlib archive’s header.
"},"Classes/XZArchive.html":{"name":"XZArchive","abstract":"Provides unarchive function for XZ archives.
"},"Classes/LZMA2.html#/s:ZFC13SWCompression5LZMA210decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using LZMA2 algortihm.
","parent_name":"LZMA2"},"Classes/LZMA.html#/s:ZFC13SWCompression4LZMA10decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using LZMA algortihm.
","parent_name":"LZMA"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate10decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using Deflate algortihm.
","parent_name":"Deflate"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate8compressFzT4dataV10Foundation4Data_S2_":{"name":"compress(data:)","abstract":"Compresses data with Deflate algortihm.
","parent_name":"Deflate"},"Classes/BZip2.html#/s:ZFC13SWCompression5BZip210decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using BZip2 algortihm.
","parent_name":"BZip2"},"Classes/BZip2.html":{"name":"BZip2","abstract":"Provides decompression function for BZip2 algorithm.
"},"Classes/Deflate.html":{"name":"Deflate","abstract":"Provides compression and decompression functions for Deflate algorithm.
"},"Classes/LZMA.html":{"name":"LZMA","abstract":"Provides decompression function for LZMA algorithm.
"},"Classes/LZMA2.html":{"name":"LZMA2","abstract":"Provides decompression function for LZMA2 algorithm.
"},"Compression.html":{"name":"Compression"},"Archives.html":{"name":"Archives"},"Containers.html":{"name":"Containers"},"Errors.html":{"name":"Errors"},"Protocols.html":{"name":"Protocols"}}
\ No newline at end of file
+{"Protocols/DecompressionAlgorithm.html#/s:ZFP13SWCompression22DecompressionAlgorithm10decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompress data compressed with particular algorithm.
","parent_name":"DecompressionAlgorithm"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry4nameSS":{"name":"name","abstract":"Retrieve name of the entry from the container.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry4sizeSi":{"name":"size","abstract":"Retrieve size of the entry’s data from the container.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry11isDirectorySb":{"name":"isDirectory","abstract":"True, if entry is a directory.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry6isLinkSb":{"name":"isLink","abstract":"True, if entry is a symbolic link.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry8linkPathGSqSS_":{"name":"linkPath","abstract":"Path to a linked file for symbolic link entry.
","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"Provides a dictionary with various attributes of the entry.","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:FP13SWCompression14ContainerEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"
Retrieve entry’s data from the container.
","parent_name":"ContainerEntry"},"Protocols/Container.html#/s:ZFP13SWCompression9Container4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Retrieve all the entries from the container.
","parent_name":"Container"},"Protocols/Archive.html#/s:ZFP13SWCompression7Archive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchive data from the archive.
","parent_name":"Archive"},"Protocols/Archive.html":{"name":"Archive","abstract":"A type that represents an archive.
"},"Protocols/Container.html":{"name":"Container","abstract":"A type that represents a container of files, directories and/or other data.
"},"Protocols/ContainerEntry.html":{"name":"ContainerEntry","abstract":"A type that represents an entry from a container (file or directory) with attributes.
"},"Protocols/DecompressionAlgorithm.html":{"name":"DecompressionAlgorithm","abstract":"A type that provides an implementation of a particular decompression algorithm.
"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError22wrongCompressionMethodFMS0_S0_":{"name":"wrongCompressionMethod","abstract":"Compression method used in archive is different from Deflate, which is the only supported one.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError20wrongCompressionInfoFMS0_S0_":{"name":"wrongCompressionInfo","abstract":"Compression info has value incompatible with Deflate compression method.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError11wrongFcheckFMS0_S0_":{"name":"wrongFcheck","abstract":"First two bytes of archive’s flags are inconsistent with each other.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError21wrongCompressionLevelFMS0_S0_":{"name":"wrongCompressionLevel","abstract":"Compression level has value, which is different from the supported ones.
","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError12wrongAdler32FMS0_FV10Foundation4DataS0_":{"name":"wrongAdler32","abstract":"Computed checksum of uncompressed data doesn’t match the value stored in archive.","parent_name":"ZlibError"},"Enums/XZError.html#/s:FO13SWCompression7XZError10wrongMagicFMS0_S0_":{"name":"wrongMagic","abstract":"
Either ‘magic’ number in header or footer isn’t equal to a predefined value.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError15wrongFieldValueFMS0_S0_":{"name":"wrongFieldValue","abstract":"One of the fields in archive has an incorrect value.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError18fieldReservedValueFMS0_S0_":{"name":"fieldReservedValue","abstract":"One of the reserved fields in archive has an unexpected value, which can also mean (apart from damaged archive),","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12wrongInfoCRCFMS0_S0_":{"name":"wrongInfoCRC","abstract":"
Checksum of one of the fields of archive doesn’t match the value stored in archive.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13wrongFilterIDFMS0_S0_":{"name":"wrongFilterID","abstract":"Filter used in archvie is unsupported.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError15checkTypeSHA256FMS0_S0_":{"name":"checkTypeSHA256","abstract":"Archive uses SHA-256 checksum which is unsupported.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13wrongDataSizeFMS0_S0_":{"name":"wrongDataSize","abstract":"Either size of decompressed data isn’t equal to the one specified in archive or","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError10wrongCheckFMS0_FV10Foundation4DataS0_":{"name":"wrongCheck","abstract":"
Computed checksum of uncompressed data doesn’t match the value stored in the archive.","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12wrongPaddingFMS0_S0_":{"name":"wrongPadding","abstract":"
Padding (null-bytes appended to an archive’s structure) is incorrect.
","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError21multiByteIntegerErrorFMS0_S0_":{"name":"multiByteIntegerError","abstract":"Either null byte encountered or exceeded maximum amount bytes during reading multi byte number.
","parent_name":"XZError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10wrongMagicFMS0_S0_":{"name":"wrongMagic","abstract":"First two bytes (‘magic’ number) of archive isn’t 31 and 139.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError22wrongCompressionMethodFMS0_S0_":{"name":"wrongCompressionMethod","abstract":"Compression method used in archive is different from Deflate, which is the only supported one.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10wrongFlagsFMS0_S0_":{"name":"wrongFlags","abstract":"One of the reserved fields in archive has an unexpected value, which can also mean (apart from damaged archive),","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError14wrongHeaderCRCFMS0_S0_":{"name":"wrongHeaderCRC","abstract":"
Computed CRC of archive’s header doesn’t match the value stored in archive.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError8wrongCRCFMS0_FV10Foundation4DataS0_":{"name":"wrongCRC","abstract":"Computed checksum of uncompressed data doesn’t match the value stored in archive.","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10wrongISizeFMS0_S0_":{"name":"wrongISize","abstract":"
Computed ‘isize’ didn’t match the value stored in the archive.
","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError21cannotEncodeISOLatin1FMS0_S0_":{"name":"cannotEncodeISOLatin1","abstract":"Either specified file name or comment cannot be encoded using ISO Latin-1 encoding.
","parent_name":"GzipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError27notFoundCentralDirectoryEndFMS0_S0_":{"name":"notFoundCentralDirectoryEnd","abstract":"End of Central Directoty record wasn’t found.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14wrongSignatureFMS0_S0_":{"name":"wrongSignature","abstract":"Wrong signature of one of container’s structures.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError9wrongSizeFMS0_S0_":{"name":"wrongSize","abstract":"Wrong either compressed or uncompressed size of a container’s entry.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError12wrongVersionFMS0_S0_":{"name":"wrongVersion","abstract":"Version needed to process container is unsupported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError24multiVolumesNotSupportedFMS0_S0_":{"name":"multiVolumesNotSupported","abstract":"Container is either spanned or consists of several volumes. These features aren’t supported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError22encryptionNotSupportedFMS0_S0_":{"name":"encryptionNotSupported","abstract":"Entry or record is encrypted. This feature isn’t supported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError20patchingNotSupportedFMS0_S0_":{"name":"patchingNotSupported","abstract":"Entry contains patched data. This feature isn’t supported.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError23compressionNotSupportedFMS0_S0_":{"name":"compressionNotSupported","abstract":"Entry is compressed using unsupported compression method.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError16wrongLocalHeaderFMS0_S0_":{"name":"wrongLocalHeader","abstract":"Local header of an entry is inconsistent with Central Directory.
","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError10wrongCRC32FMS0_FV10Foundation4DataS0_":{"name":"wrongCRC32","abstract":"Computed checksum of entry’s data doesn’t match the value stored in container.","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14wrongTextFieldFMS0_S0_":{"name":"wrongTextField","abstract":"
Either entry’s comment or file name cannot be processed using UTF-8 encoding.
","parent_name":"ZipError"},"Enums/TarError.html#/s:FO13SWCompression8TarError20tooSmallFileIsPassedFMS0_S0_":{"name":"tooSmallFileIsPassed","abstract":"Size of data is too small, even to contain only one header.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError16fieldIsNotNumberFMS0_S0_":{"name":"fieldIsNotNumber","abstract":"Failed to process a field as a number.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError19wrongHeaderChecksumFMS0_S0_":{"name":"wrongHeaderChecksum","abstract":"Computed checksum of a header doesn’t match the value stored in container.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError17wrongUstarVersionFMS0_S0_":{"name":"wrongUstarVersion","abstract":"Unsupported version of USTAR format.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError19wrongPaxHeaderEntryFMS0_S0_":{"name":"wrongPaxHeaderEntry","abstract":"Entry from PAX extended header is in incorrect format.
","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError14notAsciiStringFMS0_S0_":{"name":"notAsciiString","abstract":"Failed to process a field as an ASCII string.
","parent_name":"TarError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError14wrongSignatureFMS0_S0_":{"name":"wrongSignature","abstract":"Wrong container’s signature.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError18wrongFormatVersionFMS0_S0_":{"name":"wrongFormatVersion","abstract":"Unsupporte version of container’s format.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError8wrongCRCFMS0_S0_":{"name":"wrongCRC","abstract":"CRC either of one of the files from the container","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError9wrongSizeFMS0_S0_":{"name":"wrongSize","abstract":"
Size either of one of the files from the container","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError20startPosNotSupportedFMS0_S0_":{"name":"startPosNotSupported","abstract":"
Files have StartPos property. This feature isn’t supported.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError20externalNotSupportedFMS0_S0_":{"name":"externalNotSupported","abstract":"External feature isn’t supported.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError23multiStreamNotSupportedFMS0_S0_":{"name":"multiStreamNotSupported","abstract":"Coders with multiple in and/or out streams aren’t supported.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError29additionalStreamsNotSupportedFMS0_S0_":{"name":"additionalStreamsNotSupported","abstract":"Additional streams feature isn’t supported.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError23compressionNotSupportedFMS0_S0_":{"name":"compressionNotSupported","abstract":"Entry is compressed using unsupported compression method.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError22encryptionNotSupportedFMS0_S0_":{"name":"encryptionNotSupported","abstract":"Entry or container’s header is encrypted. This feature isn’t supported.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError17dataIsUnavailableFMS0_S0_":{"name":"dataIsUnavailable","abstract":"Entry’s data isn’t available.
","parent_name":"SevenZipError"},"Enums/SevenZipError.html#/s:FO13SWCompression13SevenZipError22internalStructureErrorFMS0_S0_":{"name":"internalStructureError","abstract":"Unknown/incorrect internal 7-Zip structure was encountered or","parent_name":"SevenZipError"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error15wrongPropertiesFMS0_S0_":{"name":"wrongProperties","abstract":"
Reserved bits of LZMA2 properties’ byte aren’t equal to zero.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error19wrongDictionarySizeFMS0_S0_":{"name":"wrongDictionarySize","abstract":"Dictionary size is too big.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error16wrongControlByteFMS0_S0_":{"name":"wrongControlByte","abstract":"Unknown conrol byte value of LZMA2 packet.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10wrongResetFMS0_S0_":{"name":"wrongReset","abstract":"Unknown reset instruction encountered in LZMA2 packet.
","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10wrongSizesFMS0_S0_":{"name":"wrongSizes","abstract":"Either size of decompressed data isn’t equal to the one specified in LZMA2 packet or","parent_name":"LZMA2Error"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError15wrongPropertiesFMS0_S0_":{"name":"wrongProperties","abstract":"
Properties’ byte is greater than 225.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError21rangeDecoderInitErrorFMS0_S0_":{"name":"rangeDecoderInitError","abstract":"Unable to initialize RanderDecorer.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError24exceededUncompressedSizeFMS0_S0_":{"name":"exceededUncompressedSize","abstract":"Size of uncompressed data hit specified limit in the middle of decoding.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError13windowIsEmptyFMS0_S0_":{"name":"windowIsEmpty","abstract":"Unable to perfrom repeat-distance decoding because there is nothing to repeat.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError23rangeDecoderFinishErrorFMS0_S0_":{"name":"rangeDecoderFinishError","abstract":"End of stream marker is reached, but range decoder is in incorrect state.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError16repeatWillExceedFMS0_S0_":{"name":"repeatWillExceed","abstract":"The number of bytes to repeat is greater than the amount bytes that is left to decode.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError17notEnoughToRepeatFMS0_S0_":{"name":"notEnoughToRepeat","abstract":"The amount of already decoded bytes is smaller than repeat length.
","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError23decoderIsNotInitialisedFMS0_S0_":{"name":"decoderIsNotInitialised","abstract":"LZMADecoder wasn’t properly initialized before decoding data.
","parent_name":"LZMAError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError29wrongUncompressedBlockLengthsFMS0_S0_":{"name":"wrongUncompressedBlockLengths","abstract":"Uncompressed block’s length and nlength bytes isn’t consistent with each other.
","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14wrongBlockTypeFMS0_S0_":{"name":"wrongBlockType","abstract":"Unknown block type (not 0, 1 or 2).
","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError11wrongSymbolFMS0_S0_":{"name":"wrongSymbol","abstract":"Decoded symbol was found in Huffman tree but is unknown.
","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14symbolNotFoundFMS0_S0_":{"name":"symbolNotFound","abstract":"Symbol wasn’t found in Huffman tree.
","parent_name":"DeflateError"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error10wrongMagicFMS0_S0_":{"name":"wrongMagic","abstract":"‘Magic’ number is not 0x425a.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22wrongCompressionMethodFMS0_S0_":{"name":"wrongCompressionMethod","abstract":"Compression method is not type ‘h’ (not Huffman).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14wrongBlockSizeFMS0_S0_":{"name":"wrongBlockSize","abstract":"Unsupported block size (not from ‘0’ to ‘9’).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14wrongBlockTypeFMS0_S0_":{"name":"wrongBlockType","abstract":"Unsupported block type (is neither ‘pi’ nor ‘sqrt(pi)’).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error15randomizedBlockFMS0_S0_":{"name":"randomizedBlock","abstract":"Block is randomized.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error18wrongHuffmanGroupsFMS0_S0_":{"name":"wrongHuffmanGroups","abstract":"Wrong number of Huffman tables/groups (should be between 2 and 6).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error13wrongSelectorFMS0_S0_":{"name":"wrongSelector","abstract":"Selector is greater than the total number of Huffman tables/groups.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22wrongHuffmanLengthCodeFMS0_S0_":{"name":"wrongHuffmanLengthCode","abstract":"Wrong code of Huffman length (should be between 0 and 20).
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14symbolNotFoundFMS0_S0_":{"name":"symbolNotFound","abstract":"Symbol wasn’t found in Huffman tree.
","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error8wrongCRCFMS0_FV10Foundation4DataS0_":{"name":"wrongCRC","abstract":"Computed checksum of uncompressed data doesn’t match the value stored in archive.","parent_name":"BZip2Error"},"Enums/BZip2Error.html":{"name":"BZip2Error","abstract":"
Represents an error, which happened during BZip2 decompression."},"Enums/DeflateError.html":{"name":"DeflateError","abstract":"
Represents an error, which happened during Deflate compression or decompression."},"Enums/LZMAError.html":{"name":"LZMAError","abstract":"
Represents an error, which happened during LZMA decompression."},"Enums/LZMA2Error.html":{"name":"LZMA2Error","abstract":"
Represents an error, which happened during LZMA2 decompression."},"Enums/SevenZipError.html":{"name":"SevenZipError","abstract":"
Represents an error, which happened during processing 7-Zip container."},"Enums/TarError.html":{"name":"TarError","abstract":"
Represents an error, which happened during processing TAR container."},"Enums/ZipError.html":{"name":"ZipError","abstract":"
Represents an error, which happened during processing ZIP container."},"Enums/GzipError.html":{"name":"GzipError","abstract":"
Represents an error, which happened during processing GZip archive."},"Enums/XZError.html":{"name":"XZError","abstract":"
Represents an error, which happened during unarchiving XZ archive."},"Enums/ZlibError.html":{"name":"ZlibError","abstract":"
Represents an error, which happened during processing Zlib archive."},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry4nameSS":{"name":"name","abstract":"
Name of the file or directory.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry7commentGSqSS_":{"name":"comment","abstract":"Comment associated with the entry.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry10attributesVs6UInt32":{"name":"attributes","abstract":"File or directory attributes related to the file system of the container’s creator.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry4sizeSi":{"name":"size","abstract":"Size of the data associated with the entry.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry11isDirectorySb":{"name":"isDirectory","abstract":"True, if entry is a directory.","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry6isLinkSb":{"name":"isLink","abstract":"
True, if entry is a symbolic link.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry8linkPathGSqSS_":{"name":"linkPath","abstract":"Path to a linked file for symbolic link entry.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry10isTextFileSb":{"name":"isTextFile","abstract":"True if entry is likely to be text or ASCII file.
","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"Provides a dictionary with various attributes of the entry.","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:FC13SWCompression8ZipEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"
Returns data associated with this entry.
","parent_name":"ZipEntry"},"Classes/ZipContainer.html#/s:ZFC13SWCompression12ZipContainer4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Processes ZIP container and returns an array of ContainerEntry (which are actually ZipEntry ).
","parent_name":"ZipContainer"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType6normalFMS1_S1_":{"name":"normal","abstract":"Normal file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType8hardLinkFMS1_S1_":{"name":"hardLink","abstract":"Hard linked entry.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType12symbolicLinkFMS1_S1_":{"name":"symbolicLink","abstract":"Symbolically linked entry.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType16characterSpecialFMS1_S1_":{"name":"characterSpecial","abstract":"Character special file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType12blockSpecialFMS1_S1_":{"name":"blockSpecial","abstract":"Block special file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType9directoryFMS1_S1_":{"name":"directory","abstract":"Directory.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType4fifoFMS1_S1_":{"name":"fifo","abstract":"FIFO special file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType10contiguousFMS1_S1_":{"name":"contiguous","abstract":"Contiguous file.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType20globalExtendedHeaderFMS1_S1_":{"name":"globalExtendedHeader","abstract":"PAX global extended header. (Should not be encountered separately).
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType19localExtendedHeaderFMS1_S1_":{"name":"localExtendedHeader","abstract":"PAX local extended header. (Should not be encountered separately).
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType23vendorUnknownOrReservedFMS1_S1_":{"name":"vendorUnknownOrReserved","abstract":"Either unknown type, vendor specific or reserved value.
","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html":{"name":"EntryType","abstract":"Represents a type of an entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4nameSS":{"name":"name","abstract":"Name of the file or directory.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry11isDirectorySb":{"name":"isDirectory","abstract":"True, if entry is a directory.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4sizeSi":{"name":"size","abstract":"Size of the data associated with the entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"Provides a dictionary with various attributes of the entry.","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4modeGSqSi_":{"name":"mode","abstract":"
File mode.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7ownerIDGSqSi_":{"name":"ownerID","abstract":"Owner’s ID.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7groupIDGSqSi_":{"name":"groupID","abstract":"Owner’s group ID.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry16modificationTimeV10Foundation4Date":{"name":"modificationTime","abstract":"The most recent modification time of the original file or directory.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4typeOS0_9EntryType":{"name":"type","abstract":"Type of entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry13ownerUserNameGSqSS_":{"name":"ownerUserName","abstract":"Owner’s user name.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry14ownerGroupNameGSqSS_":{"name":"ownerGroupName","abstract":"Owner’s group name.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry10accessTimeGSqV10Foundation4Date_":{"name":"accessTime","abstract":"The most recent access time of the original file or directory (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry12creationTimeGSqV10Foundation4Date_":{"name":"creationTime","abstract":"The creation time of the original file or directory (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7charsetGSqSS_":{"name":"charset","abstract":"Name of the character set used to encode entry’s data (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7commentGSqSS_":{"name":"comment","abstract":"Comment associated with the entry (PAX only).
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry6isLinkSb":{"name":"isLink","abstract":"True if entry is a symbolic link.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry8linkPathGSqSS_":{"name":"linkPath","abstract":"Path to a linked file for symbolic link entry.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry28unknownExtendedHeaderEntriesGVs10DictionarySSSS_":{"name":"unknownExtendedHeaderEntries","abstract":"Other entries from PAX extended headers.
","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:FC13SWCompression8TarEntry4dataFT_V10Foundation4Data":{"name":"data()","abstract":"Returns data associated with this entry.
","parent_name":"TarEntry"},"Classes/TarContainer.html#/s:ZFC13SWCompression12TarContainer4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Processes TAR container and returns an array of ContainerEntry (which are actually TarEntry ).
","parent_name":"TarContainer"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType4fifoFMS1_S1_":{"name":"fifo","abstract":"FIFO special file.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType16characterSpecialFMS1_S1_":{"name":"characterSpecial","abstract":"Character special file.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType9directoryFMS1_S1_":{"name":"directory","abstract":"Directory.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType12blockSpecialFMS1_S1_":{"name":"blockSpecial","abstract":"Block special file.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType7regularFMS1_S1_":{"name":"regular","abstract":"Regular file.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType12symbolicLinkFMS1_S1_":{"name":"symbolicLink","abstract":"Symbolic link.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/UnixType.html#/s:FOV13SWCompression17SevenZipEntryInfo8UnixType6socketFMS1_S1_":{"name":"socket","abstract":"Socket.
","parent_name":"UnixType"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:vVV13SWCompression17SevenZipEntryInfo13DosAttributes8rawValueVs6UInt32":{"name":"rawValue","abstract":"Raw bit flags value.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:FVV13SWCompression17SevenZipEntryInfo13DosAttributescFT8rawValueVs6UInt32_S1_":{"name":"init(rawValue:)","abstract":"Initializes attributes with bit flags.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:ZvVV13SWCompression17SevenZipEntryInfo13DosAttributes7archiveS1_":{"name":"archive","abstract":"File is archive or archived.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:ZvVV13SWCompression17SevenZipEntryInfo13DosAttributes9directoryS1_":{"name":"directory","abstract":"File is a directory.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:ZvVV13SWCompression17SevenZipEntryInfo13DosAttributes6volumeS1_":{"name":"volume","abstract":"File is a volume.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:ZvVV13SWCompression17SevenZipEntryInfo13DosAttributes6systemS1_":{"name":"system","abstract":"File is a system file.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:ZvVV13SWCompression17SevenZipEntryInfo13DosAttributes6hiddenS1_":{"name":"hidden","abstract":"File is hidden.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/DosAttributes.html#/s:ZvVV13SWCompression17SevenZipEntryInfo13DosAttributes8readOnlyS1_":{"name":"readOnly","abstract":"File is read-only.
","parent_name":"DosAttributes"},"Structs/SevenZipEntryInfo/Permissions.html#/s:vVV13SWCompression17SevenZipEntryInfo11Permissions8rawValueVs6UInt32":{"name":"rawValue","abstract":"Raw bit flags value (in decimal).
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:FVV13SWCompression17SevenZipEntryInfo11PermissionscFT8rawValueVs6UInt32_S1_":{"name":"init(rawValue:)","abstract":"Initializes permissions with bit flags in decimal.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions6setuidS1_":{"name":"setuid","abstract":"Set UID.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions6setgidS1_":{"name":"setgid","abstract":"Set GID.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions6stickyS1_":{"name":"sticky","abstract":"Sticky bit.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions9readOwnerS1_":{"name":"readOwner","abstract":"Owner can read.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions10writeOwnerS1_":{"name":"writeOwner","abstract":"Owner can write.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions12executeOwnerS1_":{"name":"executeOwner","abstract":"Owner can execute.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions9readGroupS1_":{"name":"readGroup","abstract":"Group can read.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions10writeGroupS1_":{"name":"writeGroup","abstract":"Group can write.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions12executeGroupS1_":{"name":"executeGroup","abstract":"Group can execute.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions9readOtherS1_":{"name":"readOther","abstract":"Others can read.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions10writeOtherS1_":{"name":"writeOther","abstract":"Others can write.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html#/s:ZvVV13SWCompression17SevenZipEntryInfo11Permissions12executeOtherS1_":{"name":"executeOther","abstract":"Others can execute.
","parent_name":"Permissions"},"Structs/SevenZipEntryInfo/Permissions.html":{"name":"Permissions","abstract":"Represents file access permissions in UNIX format.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo/DosAttributes.html":{"name":"DosAttributes","abstract":"Represents file attributes in DOS format.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo/UnixType.html":{"name":"UnixType","abstract":"Represents file type in UNIX format.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo4nameGSqSS_":{"name":"name","abstract":"Entry’s name.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo4sizeGSqSi_":{"name":"size","abstract":"Entry’s data size.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo11isDirectorySb":{"name":"isDirectory","abstract":"True, if entry is a directory.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo10accessTimeGSqV10Foundation4Date_":{"name":"accessTime","abstract":"Entry’s last access time and date.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo12creationTimeGSqV10Foundation4Date_":{"name":"creationTime","abstract":"Entry’s creation time and date.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo16modificationTimeGSqV10Foundation4Date_":{"name":"modificationTime","abstract":"Entry’s last modification time and date.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo13winAttributesGSqVs6UInt32_":{"name":"winAttributes","abstract":"7-Zip internal property which may contain UNIX permissions, type and/or DOS attributes.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo11permissionsGSqVS0_11Permissions_":{"name":"permissions","abstract":"Entry’s UNIX file access permissions.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo13dosAttributesGSqVS0_13DosAttributes_":{"name":"dosAttributes","abstract":"Entry’s DOS attributes.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo8unixTypeGSqOS0_8UnixType_":{"name":"unixType","abstract":"Entry’s UNIX file type.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo9hasStreamSb":{"name":"hasStream","abstract":"7-Zip internal propety. Indicates whether entry has a stream (data) inside container.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo7isEmptySb":{"name":"isEmpty","abstract":"True, if entry is an empty file. 7-Zip internal property.
","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo6isAntiSb":{"name":"isAnti","abstract":"True if entry is an anti-file.","parent_name":"SevenZipEntryInfo"},"Structs/SevenZipEntryInfo.html#/s:vV13SWCompression17SevenZipEntryInfo3crcGSqVs6UInt32_":{"name":"crc","abstract":"
CRC32 of entry’s data.
","parent_name":"SevenZipEntryInfo"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry4infoVS_17SevenZipEntryInfo":{"name":"info","abstract":"Various information about entry.
","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry4nameSS":{"name":"name","abstract":"Entry’s name.
","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry4sizeSi":{"name":"size","abstract":"Entry’s data size.
","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry11isDirectorySb":{"name":"isDirectory","abstract":"True, if entry is a directory.
","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry6isLinkSb":{"name":"isLink","abstract":"True, if entry is a symbolic link.
","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry8linkPathGSqSS_":{"name":"linkPath","abstract":"Path to a linked file for symbolic link entry.
","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry15entryAttributesGVs10DictionaryVSC16FileAttributeKeyP__":{"name":"entryAttributes","abstract":"Provides a dictionary with various attributes of the entry.","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:vC13SWCompression13SevenZipEntry15dataIsAvailableSb":{"name":"dataIsAvailable","abstract":"
True, if data for entry is available.","parent_name":"SevenZipEntry"},"Classes/SevenZipEntry.html#/s:FC13SWCompression13SevenZipEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"
Returns data associated with this entry.
","parent_name":"SevenZipEntry"},"Classes/SevenZipContainer.html#/s:ZFC13SWCompression17SevenZipContainer4openFzT9containerV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(container:)","abstract":"Processes 7-Zip container and returns an array of ContainerEntry (which are actually SevenZipEntry ).
","parent_name":"SevenZipContainer"},"Classes/SevenZipContainer.html#/s:ZFC13SWCompression17SevenZipContainer4infoFzT9containerV10Foundation4Data_GSaVS_17SevenZipEntryInfo_":{"name":"info(container:)","abstract":"Processes ZIP container and returns an array of SevenZipEntryInfo ,","parent_name":"SevenZipContainer"},"Classes/SevenZipContainer.html":{"name":"SevenZipContainer","abstract":"
Provides open functions for 7-Zip containers.
"},"Classes/SevenZipEntry.html":{"name":"SevenZipEntry","abstract":"Represents an entry in 7-Zip container.
"},"Structs/SevenZipEntryInfo.html":{"name":"SevenZipEntryInfo","abstract":"Provides information about 7-Zip entry.
"},"Classes/TarContainer.html":{"name":"TarContainer","abstract":"Provides open function for TAR containers.
"},"Classes/TarEntry.html":{"name":"TarEntry","abstract":"Represents either a file or directory entry in TAR container.
"},"Classes/ZipContainer.html":{"name":"ZipContainer","abstract":"Provides open function for ZIP containers.
"},"Classes/ZipEntry.html":{"name":"ZipEntry","abstract":"Represents either a file or directory entry in ZIP container.
"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16fastestAlgorithmFMS1_S1_":{"name":"fastestAlgorithm","abstract":"Fastest algorithm.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13fastAlgorithmFMS1_S1_":{"name":"fastAlgorithm","abstract":"Fast algorithm.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16defaultAlgorithmFMS1_S1_":{"name":"defaultAlgorithm","abstract":"Default algorithm.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13slowAlgorithmFMS1_S1_":{"name":"slowAlgorithm","abstract":"Slowest algorithm but with maximum compression.
","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionMethod.html#/s:FOV13SWCompression10ZlibHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"The only one supported compression method (Deflate).
","parent_name":"CompressionMethod"},"Structs/ZlibHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"Supported compression methods in zlib archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader/CompressionLevel.html":{"name":"CompressionLevel","abstract":"Levels of compression which can be used to create Zlib archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"Compression method of archive. Currently, always equals to .deflate.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader16compressionLevelOS0_16CompressionLevel":{"name":"compressionLevel","abstract":"Level of compression used in archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader10windowSizeSi":{"name":"windowSize","abstract":"Size of ‘window’: moving interval of data which was used to make archive.
","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:FV13SWCompression10ZlibHeadercFzT7archiveV10Foundation4Data_S0_":{"name":"init(archive:)","abstract":"Initializes the structure with the values from Zlib archive.
","parent_name":"ZlibHeader"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchives Zlib archive.
","parent_name":"ZlibArchive"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive7archiveFzT4dataV10Foundation4Data_S2_":{"name":"archive(data:)","abstract":"Archives data into Zlib archive.","parent_name":"ZlibArchive"},"Classes/XZArchive.html#/s:ZFC13SWCompression9XZArchive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"
Unarchives XZ archive.
","parent_name":"XZArchive"},"Classes/XZArchive.html#/s:ZFC13SWCompression9XZArchive14multiUnarchiveFzT7archiveV10Foundation4Data_GSaS2__":{"name":"multiUnarchive(archive:)","abstract":"Unarchives XZ archive which contains one or more streams.
","parent_name":"XZArchive"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4unixFMS1_S1_":{"name":"unix","abstract":"One of many UNIX-like systems.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType9macintoshFMS1_S1_":{"name":"macintosh","abstract":"Older Macintosh systems.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4ntfsFMS1_S1_":{"name":"ntfs","abstract":"File system used in Microsoft™®© Windows™®©.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType7unknownFMS1_S1_":{"name":"unknown","abstract":"File system was unknown to the archiver.
","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType5otherFMS1_S1_":{"name":"other","abstract":"File system is one of the rare systems.
","parent_name":"FileSystemType"},"Structs/GzipHeader/CompressionMethod.html#/s:FOV13SWCompression10GzipHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"The only one supported compression method (Deflate).
","parent_name":"CompressionMethod"},"Structs/GzipHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"Supported compression methods in GZip archive.
","parent_name":"GzipHeader"},"Structs/GzipHeader/FileSystemType.html":{"name":"FileSystemType","abstract":"Type of file system on which GZip archive was created.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"Compression method of archive. Currently, always equals to .deflate.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader16modificationTimeGSqV10Foundation4Date_":{"name":"modificationTime","abstract":"The most recent modification time of the original file.","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader6osTypeOS0_14FileSystemType":{"name":"osType","abstract":"
Type of file system on which archivation took place.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader8fileNameGSqSS_":{"name":"fileName","abstract":"Name of the original file. If archive doesn’t contain file’s name, then nil.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader7commentGSqSS_":{"name":"comment","abstract":"Comment stored in archive. If archive doesn’t contain any comment, then nil.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader10isTextFileSb":{"name":"isTextFile","abstract":"Check if file is likely to be text file or ASCII-file.
","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:FV13SWCompression10GzipHeadercFzT7archiveV10Foundation4Data_S0_":{"name":"init(archive:)","abstract":"Initializes the structure with the values from the first ‘member’ of GZip archive.
","parent_name":"GzipHeader"},"Classes/GzipArchive/Member.html#/s:vVC13SWCompression11GzipArchive6Member6headerVS_10GzipHeader":{"name":"header","abstract":"GZip header of a member.
","parent_name":"Member"},"Classes/GzipArchive/Member.html#/s:vVC13SWCompression11GzipArchive6Member4dataV10Foundation4Data":{"name":"data","abstract":"Unarchived data from a member.
","parent_name":"Member"},"Classes/GzipArchive/Member.html":{"name":"Member","abstract":"Represents a member of multi-member of GZip archive.
","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive9unarchiveFzT7archiveV10Foundation4Data_S2_":{"name":"unarchive(archive:)","abstract":"Unarchives GZip archive.
","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive14multiUnarchiveFzT7archiveV10Foundation4Data_GSaVS0_6Member_":{"name":"multiUnarchive(archive:)","abstract":"Unarchives multi-member GZip archive.","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive7archiveFzT4dataV10Foundation4Data7commentGSqSS_8fileNameGSqSS_14writeHeaderCRCSb10isTextFileSb6osTypeGSqOVS_10GzipHeader14FileSystemType_16modificationTimeGSqVS1_4Date__S2_":{"name":"archive(data:comment:fileName:writeHeaderCRC:isTextFile:osType:modificationTime:)","abstract":"
Archives data into GZip archive, using various specified options.","parent_name":"GzipArchive"},"Classes/GzipArchive.html":{"name":"GzipArchive","abstract":"
Provides unarchive and archive functions for GZip archives.
"},"Structs/GzipHeader.html":{"name":"GzipHeader","abstract":"Represents a GZip archive’s header.
"},"Classes/XZArchive.html":{"name":"XZArchive","abstract":"Provides unarchive function for XZ archives.
"},"Classes/ZlibArchive.html":{"name":"ZlibArchive","abstract":"Provides unarchive and archive functions for Zlib archives.
"},"Structs/ZlibHeader.html":{"name":"ZlibHeader","abstract":"Represents a Zlib archive’s header.
"},"Classes/LZMA2.html#/s:ZFC13SWCompression5LZMA210decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using LZMA2 algortihm.
","parent_name":"LZMA2"},"Classes/LZMA.html#/s:ZFC13SWCompression4LZMA10decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using LZMA algortihm.
","parent_name":"LZMA"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate10decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using Deflate algortihm.
","parent_name":"Deflate"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate8compressFzT4dataV10Foundation4Data_S2_":{"name":"compress(data:)","abstract":"Compresses data with Deflate algortihm.
","parent_name":"Deflate"},"Classes/BZip2.html#/s:ZFC13SWCompression5BZip210decompressFzT4dataV10Foundation4Data_S2_":{"name":"decompress(data:)","abstract":"Decompresses data using BZip2 algortihm.
","parent_name":"BZip2"},"Classes/BZip2.html":{"name":"BZip2","abstract":"Provides decompression function for BZip2 algorithm.
"},"Classes/Deflate.html":{"name":"Deflate","abstract":"Provides compression and decompression functions for Deflate algorithm.
"},"Classes/LZMA.html":{"name":"LZMA","abstract":"Provides decompression function for LZMA algorithm.
"},"Classes/LZMA2.html":{"name":"LZMA2","abstract":"Provides decompression function for LZMA2 algorithm.
"},"Compression.html":{"name":"Compression"},"Archives.html":{"name":"Archives"},"Containers.html":{"name":"Containers"},"Errors.html":{"name":"Errors"},"Protocols.html":{"name":"Protocols"}}
\ No newline at end of file