aboutsummaryrefslogtreecommitdiff
path: root/vendor/flate2
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/flate2')
-rw-r--r--vendor/flate2/.cargo-checksum.json1
-rw-r--r--vendor/flate2/Cargo.lock173
-rw-r--r--vendor/flate2/Cargo.toml111
-rw-r--r--vendor/flate2/LICENSE-APACHE201
-rw-r--r--vendor/flate2/LICENSE-MIT25
-rw-r--r--vendor/flate2/MAINTENANCE.md21
-rw-r--r--vendor/flate2/README.md120
-rw-r--r--vendor/flate2/examples/compress_file.rs26
-rw-r--r--vendor/flate2/examples/decompress_file.rs23
-rw-r--r--vendor/flate2/examples/deflatedecoder-bufread.rs22
-rw-r--r--vendor/flate2/examples/deflatedecoder-read.rs22
-rw-r--r--vendor/flate2/examples/deflatedecoder-write.rs24
-rw-r--r--vendor/flate2/examples/deflateencoder-bufread.rs22
-rw-r--r--vendor/flate2/examples/deflateencoder-read.rs18
-rw-r--r--vendor/flate2/examples/deflateencoder-write.rs10
-rw-r--r--vendor/flate2/examples/gzbuilder.rs22
-rw-r--r--vendor/flate2/examples/gzdecoder-bufread.rs21
-rw-r--r--vendor/flate2/examples/gzdecoder-read.rs21
-rw-r--r--vendor/flate2/examples/gzdecoder-write.rs24
-rw-r--r--vendor/flate2/examples/gzencoder-bufread.rs22
-rw-r--r--vendor/flate2/examples/gzencoder-read.rs18
-rw-r--r--vendor/flate2/examples/gzencoder-write.rs10
-rw-r--r--vendor/flate2/examples/gzmultidecoder-bufread.rs22
-rw-r--r--vendor/flate2/examples/gzmultidecoder-read.rs22
-rw-r--r--vendor/flate2/examples/hello_world.txt1
-rw-r--r--vendor/flate2/examples/hello_world.txt.gzbin33 -> 0 bytes
-rw-r--r--vendor/flate2/examples/zlibdecoder-bufread.rs22
-rw-r--r--vendor/flate2/examples/zlibdecoder-read.rs22
-rw-r--r--vendor/flate2/examples/zlibdecoder-write.rs24
-rw-r--r--vendor/flate2/examples/zlibencoder-bufread.rs22
-rw-r--r--vendor/flate2/examples/zlibencoder-read.rs19
-rw-r--r--vendor/flate2/examples/zlibencoder-write.rs10
-rw-r--r--vendor/flate2/src/bufreader.rs104
-rw-r--r--vendor/flate2/src/crc.rs184
-rw-r--r--vendor/flate2/src/deflate/bufread.rs245
-rw-r--r--vendor/flate2/src/deflate/mod.rs193
-rw-r--r--vendor/flate2/src/deflate/read.rs241
-rw-r--r--vendor/flate2/src/deflate/write.rs322
-rw-r--r--vendor/flate2/src/ffi/c.rs433
-rw-r--r--vendor/flate2/src/ffi/mod.rs52
-rw-r--r--vendor/flate2/src/ffi/rust.rs183
-rw-r--r--vendor/flate2/src/gz/bufread.rs483
-rw-r--r--vendor/flate2/src/gz/mod.rs644
-rw-r--r--vendor/flate2/src/gz/read.rs378
-rw-r--r--vendor/flate2/src/gz/write.rs641
-rw-r--r--vendor/flate2/src/lib.rs234
-rw-r--r--vendor/flate2/src/mem.rs772
-rw-r--r--vendor/flate2/src/zio.rs286
-rw-r--r--vendor/flate2/src/zlib/bufread.rs253
-rw-r--r--vendor/flate2/src/zlib/mod.rs159
-rw-r--r--vendor/flate2/src/zlib/read.rs275
-rw-r--r--vendor/flate2/src/zlib/write.rs340
-rw-r--r--vendor/flate2/tests/corrupt-gz-file.binbin7128 -> 0 bytes
-rw-r--r--vendor/flate2/tests/early-flush.rs18
-rw-r--r--vendor/flate2/tests/empty-read.rs80
-rw-r--r--vendor/flate2/tests/good-file.gzbin6766 -> 0 bytes
-rw-r--r--vendor/flate2/tests/good-file.txt733
-rw-r--r--vendor/flate2/tests/gunzip.rs75
-rw-r--r--vendor/flate2/tests/multi.gzbin53 -> 0 bytes
-rw-r--r--vendor/flate2/tests/multi.txt2
-rw-r--r--vendor/flate2/tests/zero-write.rs6
61 files changed, 0 insertions, 8457 deletions
diff --git a/vendor/flate2/.cargo-checksum.json b/vendor/flate2/.cargo-checksum.json
deleted file mode 100644
index be6b4dd..0000000
--- a/vendor/flate2/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.lock":"2721de22957f2a734adfc7415f27f5219bab8c60dea870f8b1c2dbd30cc46c62","Cargo.toml":"b0c766bc094342b650ce071fe410f4446b6adbe4a776253b2d906ce68393209d","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","MAINTENANCE.md":"20ef2cb336c850d849652b110ec4806b71e69ed5dd50518a95eb9d453f8bf645","README.md":"a8fab33160befebe83eece4801f401da5932c0e1cca8e97a7ae4bce4aae1b061","examples/compress_file.rs":"cbdb8b0c556409b82f894ad5326babb6dba42c219d2d675927e7f5820053b295","examples/decompress_file.rs":"cd50dfbaccc905b3e02d6c50b26586196a682880203a8694343e0391799b70d5","examples/deflatedecoder-bufread.rs":"5b8abebce157f9b7cc3f6b5c90b9d533890a514e5f8d91bb43439f52fdc9ddce","examples/deflatedecoder-read.rs":"921e13031c5436494d8af0a8705a0adda2da536edefef2e1e311dffa8acd120f","examples/deflatedecoder-write.rs":"cfce37e8758c6d543dd130c7bdff571af3c8cd11bafcc933740107a3576832df","examples/deflateencoder-bufread.rs":"9fdd7d632d861f099d19a3ec1de539d9600f8004a119dd2a70f6aba5965b2e1c","examples/deflateencoder-read.rs":"8740a942ec7d07ccb4b57c5baac7a4d649817bffe4e37ce9a06c7d6d70378e4c","examples/deflateencoder-write.rs":"8e45425684b2368ef95f3704dce6f8077f38b9a90a38d147594c7c570f0d1c6c","examples/gzbuilder.rs":"d09c83417e4a01a8593ce3462a33340e6fe17fa51b4b0b3a6005b68959df4d8c","examples/gzdecoder-bufread.rs":"76880f3e6e10ed4a0bf564be9ddae1c50811aeabf61fb573039538b81805f390","examples/gzdecoder-read.rs":"d99e9a9ce03a27f280244a24e8f5a3282e5af15b455270d99c4bfecd19238d0d","examples/gzdecoder-write.rs":"d0a982377ca1d2fd1786bb32f16454b4f0afdba5e1c7f0ab97e15e8827d351d5","examples/gzencoder-bufread.rs":"760670c124b1c5776b63c300c7e8a1dcd5e0ae633017dcf2e3d2d6e997dcc9c4","examples/gzencoder-read.rs":"27ec68675418bb7d1a110b8d1f33e7b1069f42bcce6f21f8d9235bde405cdf9f","examples/gzencoder-write.rs":"f127f2e398231d03269770fa18ac5d465f8d56d283f1118055f04f1d03369c31","examples/gzmultidecoder-bufread.rs":"bfa6c5554c3da5a61a7d1e1dad115b7ee784d136e2ac61272c87ad3e1eb4ec4c","examples/gzmultidecoder-read.rs":"c058d5eee5bf45b38132f8e487a714c9521191c7dabe2459362d2f8de689c6bf","examples/hello_world.txt":"d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26","examples/hello_world.txt.gz":"8b4c5972b92b8ee8dc99116e278afb9165276ddb13c0d334c8da2770fd4d1f7d","examples/zlibdecoder-bufread.rs":"0f541ec64c635d45fc206a02718c0b90c49123a0441a95455d6a8a9e0d20e011","examples/zlibdecoder-read.rs":"bbd85b47b8b804c3294b3f23f978eaf6fb09a187cb46eb86ae1ae2790dfab8d9","examples/zlibdecoder-write.rs":"f347a831d7201d3efd604b006c88421fa2a5906c6377b47c7ae391d0809186e6","examples/zlibencoder-bufread.rs":"e0e05686ad4521ba18b742a5cbbc5937cec1fd8b9e8313070b32c6f178dfbaf6","examples/zlibencoder-read.rs":"4a3156dc73cd77e6ac56700680652be63a1270d95ce384ebcd5c014cce2d5179","examples/zlibencoder-write.rs":"822d4cd326ac7402ff8f828c1dbb3aa108c68a89fc04488da252ca6a74e624b0","src/bufreader.rs":"2d6a59330e8f838eb6474d19104f21cb98236125c189f36bdff75a069a4cea8f","src/crc.rs":"f02b9ffbedf06360c8164f98ecf51fe7f70c48cdb3bfc72e176421419c1de030","src/deflate/bufread.rs":"49b3d3414343811f96f2ce66bf4db2cf02770986ac500368722111060c4de8b1","src/deflate/mod.rs":"d33ef6a3d502d599a4ba6ac99c6312b414002dba43c388d271fc1f8c9c609363","src/deflate/read.rs":"57f7a9609a111e88fb079188fdc0a79e1e20d97d363bd133f134ad11049220e0","src/deflate/write.rs":"fef4deebc0dc29d4ad481718613c694f6d1b733199e241a1f7f064e2707e4908","src/ffi/c.rs":"9a5648a29a534945244376777c41f9b4f100679ebc2ba3016c7e698181fb5cbf","src/ffi/mod.rs":"2b811be787e23654e56a1a5748f64f6b6953a829594aef9bdb8f223fe9a1bba9","src/ffi/rust.rs":"0a69aac9bd08728d212f503a16c0e7fb64a7822a7531bc3a96e78c89c09b6e80","src/gz/bufread.rs":"fd87b3600af9f22b52aa5e9e6f5636ade64573042f852158584234c2895b35f7","src/gz/mod.rs":"c3449201bd4bad2e4289f4cd1081a4be4505e7d9e8fee5a2838248bf979ef9f0","src/gz/read.rs":"4956e0dbe921810e88f86623c28c74f62aa3b0f36a4461a9dbaeabb2d77ef5bb","src/gz/write.rs":"78954929f24229875503ffdc04944924120c199fa502a0742e195cffcc135631","src/lib.rs":"9651a09ff275d464ff4865974797a6dc8f2f786225e159b6bd0dbbfd5afc0cef","src/mem.rs":"9ef7db386d178ef6426877d2b459165e42757b17ea01bd750e26b74f5691e97a","src/zio.rs":"ed5f375f5d6c4f094dfdd43185c9af5e91d1129bfbfa31edc6902a1f7496920b","src/zlib/bufread.rs":"9284cb80c00ff8e78f2845c1a2911a99c99745b1558085d5f42e26520ff011be","src/zlib/mod.rs":"18ea5785b913d90191c6ad8483f57d0c5f98599137659e72f3c0c78324b4f8fa","src/zlib/read.rs":"4a06d07ea137390efd823554afed7d05a8acfc3ab4f5a5382202030380281f23","src/zlib/write.rs":"5cb973ffb9fc0e6ee8f3cc4537d0b32f826dbe7c367723752d2db708af8831bb","tests/corrupt-gz-file.bin":"083dd284aa1621916a2d0f66ea048c8d3ba7a722b22d0d618722633f51e7d39c","tests/early-flush.rs":"9a4db8fcbac659c52cafe5e1ab647d86781cf8b1f298d8dee34223c0292e0d74","tests/empty-read.rs":"39143ff0383655bb115e995b2a953f11e82d0ac03b4bec080973be7c2d421054","tests/good-file.gz":"87296963e53024a74752179ce7e54087565d358a85d3e65c3b37ef36eaa3d4a6","tests/good-file.txt":"bc4e03658a441fe2ad2df7cd2197144b87e41696f01e327b380e869cd9b485a0","tests/gunzip.rs":"c00946db2147b23c4300c77fedf0a04e65c774101575e9828433831311416a50","tests/multi.gz":"efa3341da052f95056314cc6920e02a3da15bdef30234b2552fb407812db5cc6","tests/multi.txt":"dbea9325179efe46ea2add94f7b6b745ca983fabb208dc6d34aa064623d7ee23","tests/zero-write.rs":"cde1a675491d88e59a711103d3b0df4c77b60e8152b90d5a4f01b97879f8f8dc"},"package":"46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"} \ No newline at end of file
diff --git a/vendor/flate2/Cargo.lock b/vendor/flate2/Cargo.lock
deleted file mode 100644
index ee16dc6..0000000
--- a/vendor/flate2/Cargo.lock
+++ /dev/null
@@ -1,173 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "adler"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-
-[[package]]
-name = "cc"
-version = "1.0.79"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "cloudflare-zlib-sys"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2040b6d1edfee6d75f172d81e2d2a7807534f3f294ce18184c70e7bb0105cd6f"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "cmake"
-version = "0.1.50"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "crc32fast"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
-name = "flate2"
-version = "1.0.28"
-dependencies = [
- "cloudflare-zlib-sys",
- "crc32fast",
- "libz-ng-sys",
- "libz-sys",
- "miniz_oxide",
- "quickcheck",
- "rand",
-]
-
-[[package]]
-name = "getrandom"
-version = "0.2.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4"
-dependencies = [
- "cfg-if",
- "libc",
- "wasi",
-]
-
-[[package]]
-name = "libc"
-version = "0.2.144"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1"
-
-[[package]]
-name = "libz-ng-sys"
-version = "1.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "425fb6808068335c8c7c69d1cff0a7d1ed8f681e9ac040272f160a89e6f43b8b"
-dependencies = [
- "cmake",
- "libc",
-]
-
-[[package]]
-name = "libz-sys"
-version = "1.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24e6ab01971eb092ffe6a7d42f49f9ff42662f17604681e2843ad65077ba47dc"
-dependencies = [
- "cc",
- "cmake",
- "libc",
- "pkg-config",
- "vcpkg",
-]
-
-[[package]]
-name = "miniz_oxide"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
-dependencies = [
- "adler",
-]
-
-[[package]]
-name = "pkg-config"
-version = "0.3.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
-
-[[package]]
-name = "ppv-lite86"
-version = "0.2.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
-
-[[package]]
-name = "quickcheck"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6"
-dependencies = [
- "rand",
-]
-
-[[package]]
-name = "rand"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
-dependencies = [
- "libc",
- "rand_chacha",
- "rand_core",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
-dependencies = [
- "ppv-lite86",
- "rand_core",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
-dependencies = [
- "getrandom",
-]
-
-[[package]]
-name = "vcpkg"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-
-[[package]]
-name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
diff --git a/vendor/flate2/Cargo.toml b/vendor/flate2/Cargo.toml
deleted file mode 100644
index c7b2e83..0000000
--- a/vendor/flate2/Cargo.toml
+++ /dev/null
@@ -1,111 +0,0 @@
-# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-#
-# When uploading crates to the registry Cargo will automatically
-# "normalize" Cargo.toml files for maximal compatibility
-# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies.
-#
-# If you are reading this file be aware that the original Cargo.toml
-# will likely look very different (and much more reasonable).
-# See Cargo.toml.orig for the original contents.
-
-[package]
-edition = "2018"
-name = "flate2"
-version = "1.0.28"
-authors = [
- "Alex Crichton <alex@alexcrichton.com>",
- "Josh Triplett <josh@joshtriplett.org>",
-]
-description = """
-DEFLATE compression and decompression exposed as Read/BufRead/Write streams.
-Supports miniz_oxide and multiple zlib implementations. Supports zlib, gzip,
-and raw deflate streams.
-"""
-homepage = "https://github.com/rust-lang/flate2-rs"
-documentation = "https://docs.rs/flate2"
-readme = "README.md"
-keywords = [
- "gzip",
- "deflate",
- "zlib",
- "zlib-ng",
- "encoding",
-]
-categories = [
- "compression",
- "api-bindings",
-]
-license = "MIT OR Apache-2.0"
-repository = "https://github.com/rust-lang/flate2-rs"
-
-[package.metadata.docs.rs]
-all-features = true
-rustdoc-args = [
- "--cfg",
- "docsrs",
-]
-
-[dependencies.cloudflare-zlib-sys]
-version = "0.3.0"
-optional = true
-
-[dependencies.crc32fast]
-version = "1.2.0"
-
-[dependencies.libz-ng-sys]
-version = "1.1.8"
-optional = true
-
-[dependencies.libz-sys]
-version = "1.1.8"
-optional = true
-default-features = false
-
-[dependencies.miniz_oxide]
-version = "0.7.1"
-features = ["with-alloc"]
-optional = true
-default-features = false
-
-[dev-dependencies.quickcheck]
-version = "1.0"
-default-features = false
-
-[dev-dependencies.rand]
-version = "0.8"
-
-[features]
-any_impl = []
-any_zlib = ["any_impl"]
-cloudflare_zlib = [
- "any_zlib",
- "cloudflare-zlib-sys",
-]
-default = ["rust_backend"]
-miniz-sys = ["rust_backend"]
-rust_backend = [
- "miniz_oxide",
- "any_impl",
-]
-zlib = [
- "any_zlib",
- "libz-sys",
-]
-zlib-default = [
- "any_zlib",
- "libz-sys/default",
-]
-zlib-ng = [
- "any_zlib",
- "libz-ng-sys",
-]
-zlib-ng-compat = [
- "zlib",
- "libz-sys/zlib-ng",
-]
-
-[target."cfg(all(target_arch = \"wasm32\", not(target_os = \"emscripten\")))".dependencies.miniz_oxide]
-version = "0.7.1"
-features = ["with-alloc"]
-default-features = false
diff --git a/vendor/flate2/LICENSE-APACHE b/vendor/flate2/LICENSE-APACHE
deleted file mode 100644
index 16fe87b..0000000
--- a/vendor/flate2/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/vendor/flate2/LICENSE-MIT b/vendor/flate2/LICENSE-MIT
deleted file mode 100644
index 39e0ed6..0000000
--- a/vendor/flate2/LICENSE-MIT
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright (c) 2014 Alex Crichton
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/vendor/flate2/MAINTENANCE.md b/vendor/flate2/MAINTENANCE.md
deleted file mode 100644
index c032c25..0000000
--- a/vendor/flate2/MAINTENANCE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-This document explains how to perform the project's maintenance tasks.
-
-### Creating a new release
-
-#### Artifacts
-
-* a tag of the version number
-* a new [crate version](https://crates.io/crates/flate2/versions)
-
-#### Process
-
-To generate all the artifacts above, one proceeds as follows:
-
-1. `git checkout -b release-<next-version>` - move to a branch to prepare making changes to the repository. *Changes cannot be made to `main` as it is protected.*
-2. Edit `Cargo.toml` to the next package version.
-3. `gh pr create` to create a new PR for the current branch and **get it merged**.
-4. `cargo publish` to create a new release on `crates.io`.
-5. `git tag <next-version>` to remember the commit.
-6. `git push --tags` to push the new tag.
-7. Go to the newly created release page on GitHub and edit it by pressing the "Generate Release Notes" and the `@` button. Save the release.
-
diff --git a/vendor/flate2/README.md b/vendor/flate2/README.md
deleted file mode 100644
index 23ce043..0000000
--- a/vendor/flate2/README.md
+++ /dev/null
@@ -1,120 +0,0 @@
-# flate2
-
-[![Crates.io](https://img.shields.io/crates/v/flate2.svg?maxAge=2592000)](https://crates.io/crates/flate2)
-[![Documentation](https://docs.rs/flate2/badge.svg)](https://docs.rs/flate2)
-
-A streaming compression/decompression library DEFLATE-based streams in Rust.
-
-This crate by default uses the `miniz_oxide` crate, a port of `miniz.c` to pure
-Rust. This crate also supports other [backends](#backends), such as the widely
-available zlib library or the high-performance zlib-ng library.
-
-Supported formats:
-
-* deflate
-* zlib
-* gzip
-
-```toml
-# Cargo.toml
-[dependencies]
-flate2 = "1.0"
-```
-
-## MSRV (Minimum Supported Rust Version) Policy
-
-This crate supports the current stable and the last stable for the latest version.
-For example, if the current stable is 1.64, this crate supports 1.64 and 1.63.
-Older stables may work, but we don't guarantee these will continue to work.
-
-## Compression
-
-```rust
-use std::io::prelude::*;
-use flate2::Compression;
-use flate2::write::ZlibEncoder;
-
-fn main() {
- let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"foo");
- e.write_all(b"bar");
- let compressed_bytes = e.finish();
-}
-```
-
-## Decompression
-
-```rust,no_run
-use std::io::prelude::*;
-use flate2::read::GzDecoder;
-
-fn main() {
- let mut d = GzDecoder::new("...".as_bytes());
- let mut s = String::new();
- d.read_to_string(&mut s).unwrap();
- println!("{}", s);
-}
-```
-
-## Backends
-
-The default `miniz_oxide` backend has the advantage of being pure Rust. If you
-want maximum performance, you can use the zlib-ng C library:
-
-```toml
-[dependencies]
-flate2 = { version = "1.0.17", features = ["zlib-ng"], default-features = false }
-```
-
-Note that the `"zlib-ng"` feature works even if some other part of your crate
-graph depends on zlib.
-
-However, if you're already using another C or Rust library that depends on
-zlib, and you want to avoid including both zlib and zlib-ng, you can use that
-for Rust code as well:
-
-```toml
-[dependencies]
-flate2 = { version = "1.0.17", features = ["zlib"], default-features = false }
-```
-
-Or, if you have C or Rust code that depends on zlib and you want to use zlib-ng
-via libz-sys in zlib-compat mode, use:
-
-```toml
-[dependencies]
-flate2 = { version = "1.0.17", features = ["zlib-ng-compat"], default-features = false }
-```
-
-Note that when using the `"zlib-ng-compat"` feature, if any crate in your
-dependency graph explicitly requests stock zlib, or uses libz-sys directly
-without `default-features = false`, you'll get stock zlib rather than zlib-ng.
-See [the libz-sys
-README](https://github.com/rust-lang/libz-sys/blob/main/README.md) for details.
-To avoid that, use the `"zlib-ng"` feature instead.
-
-For compatibility with previous versions of `flate2`, the Cloudflare optimized
-version of zlib is available, via the `cloudflare_zlib` feature. It's not as
-fast as zlib-ng, but it's faster than stock zlib. It requires an x86-64 CPU with
-SSE 4.2 or ARM64 with NEON & CRC. It does not support 32-bit CPUs at all and is
-incompatible with mingw. For more information check the [crate
-documentation](https://crates.io/crates/cloudflare-zlib-sys). Note that
-`cloudflare_zlib` will cause breakage if any other crate in your crate graph
-uses another version of zlib/libz.
-
-# License
-
-This project is licensed under either of
-
- * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
- https://www.apache.org/licenses/LICENSE-2.0)
- * MIT license ([LICENSE-MIT](LICENSE-MIT) or
- https://opensource.org/licenses/MIT)
-
-at your option.
-
-### Contribution
-
-Unless you explicitly state otherwise, any contribution intentionally submitted
-for inclusion in this project by you, as defined in the Apache-2.0 license,
-shall be dual licensed as above, without any additional terms or conditions.
diff --git a/vendor/flate2/examples/compress_file.rs b/vendor/flate2/examples/compress_file.rs
deleted file mode 100644
index be4b81e..0000000
--- a/vendor/flate2/examples/compress_file.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-use flate2::write::GzEncoder;
-use flate2::Compression;
-use std::env::args;
-use std::fs::File;
-use std::io::copy;
-use std::io::BufReader;
-use std::time::Instant;
-
-fn main() {
- if args().len() != 3 {
- eprintln!("Usage: ./compress_file `source` `target`");
- return;
- }
- let mut input = BufReader::new(File::open(args().nth(1).unwrap()).unwrap());
- let output = File::create(args().nth(2).unwrap()).unwrap();
- let mut encoder = GzEncoder::new(output, Compression::default());
- let start = Instant::now();
- copy(&mut input, &mut encoder).unwrap();
- let output = encoder.finish().unwrap();
- println!(
- "Source len: {:?}",
- input.get_ref().metadata().unwrap().len()
- );
- println!("Target len: {:?}", output.metadata().unwrap().len());
- println!("Elapsed: {:?}", start.elapsed());
-}
diff --git a/vendor/flate2/examples/decompress_file.rs b/vendor/flate2/examples/decompress_file.rs
deleted file mode 100644
index 6b2ede9..0000000
--- a/vendor/flate2/examples/decompress_file.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-use flate2::bufread;
-use std::env::args;
-use std::fs::File;
-use std::io::copy;
-use std::io::BufReader;
-use std::time::Instant;
-
-fn main() {
- // E.g. `cargo run --example decompress_file examples/hello_world.txt.gz hello_world.txt`
- if args().len() != 3 {
- eprintln!("Usage: ./decompress_file `source` `target`");
- return;
- }
- let input = BufReader::new(File::open(args().nth(1).unwrap()).unwrap());
- let mut output = File::create(args().nth(2).unwrap()).unwrap();
- let source_len = input.get_ref().metadata().unwrap().len();
- let start = Instant::now();
- let mut decoder = bufread::GzDecoder::new(input);
- copy(&mut decoder, &mut output).unwrap();
- println!("Source len: {:?}", source_len);
- println!("Target len: {:?}", output.metadata().unwrap().len());
- println!("Elapsed: {:?}", start.elapsed());
-}
diff --git a/vendor/flate2/examples/deflatedecoder-bufread.rs b/vendor/flate2/examples/deflatedecoder-bufread.rs
deleted file mode 100644
index 6b8e7fe..0000000
--- a/vendor/flate2/examples/deflatedecoder-bufread.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-use flate2::bufread::DeflateDecoder;
-use flate2::write::DeflateEncoder;
-use flate2::Compression;
-use std::io;
-use std::io::prelude::*;
-
-// Compress a sample string and print it after transformation.
-fn main() {
- let mut e = DeflateEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- let bytes = e.finish().unwrap();
- println!("{}", decode_reader(bytes).unwrap());
-}
-
-// Uncompresses a Deflate Encoded vector of bytes and returns a string or error
-// Here &[u8] implements Read
-fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
- let mut deflater = DeflateDecoder::new(&bytes[..]);
- let mut s = String::new();
- deflater.read_to_string(&mut s)?;
- Ok(s)
-}
diff --git a/vendor/flate2/examples/deflatedecoder-read.rs b/vendor/flate2/examples/deflatedecoder-read.rs
deleted file mode 100644
index 1bc83bc..0000000
--- a/vendor/flate2/examples/deflatedecoder-read.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-use flate2::read::DeflateDecoder;
-use flate2::write::DeflateEncoder;
-use flate2::Compression;
-use std::io;
-use std::io::prelude::*;
-
-// Compress a sample string and print it after transformation.
-fn main() {
- let mut e = DeflateEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- let bytes = e.finish().unwrap();
- println!("{}", decode_reader(bytes).unwrap());
-}
-
-// Uncompresses a Deflate Encoded vector of bytes and returns a string or error
-// Here &[u8] implements Read
-fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
- let mut deflater = DeflateDecoder::new(&bytes[..]);
- let mut s = String::new();
- deflater.read_to_string(&mut s)?;
- Ok(s)
-}
diff --git a/vendor/flate2/examples/deflatedecoder-write.rs b/vendor/flate2/examples/deflatedecoder-write.rs
deleted file mode 100644
index b9ba7a3..0000000
--- a/vendor/flate2/examples/deflatedecoder-write.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-use flate2::write::DeflateDecoder;
-use flate2::write::DeflateEncoder;
-use flate2::Compression;
-use std::io;
-use std::io::prelude::*;
-
-// Compress a sample string and print it after transformation.
-fn main() {
- let mut e = DeflateEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- let bytes = e.finish().unwrap();
- println!("{}", decode_reader(bytes).unwrap());
-}
-
-// Uncompresses a Deflate Encoded vector of bytes and returns a string or error
-// Here Vec<u8> implements Write
-fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
- let mut writer = Vec::new();
- let mut deflater = DeflateDecoder::new(writer);
- deflater.write_all(&bytes[..])?;
- writer = deflater.finish()?;
- let return_string = String::from_utf8(writer).expect("String parsing error");
- Ok(return_string)
-}
diff --git a/vendor/flate2/examples/deflateencoder-bufread.rs b/vendor/flate2/examples/deflateencoder-bufread.rs
deleted file mode 100644
index bff1848..0000000
--- a/vendor/flate2/examples/deflateencoder-bufread.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-use flate2::bufread::DeflateEncoder;
-use flate2::Compression;
-use std::fs::File;
-use std::io;
-use std::io::prelude::*;
-use std::io::BufReader;
-
-// Open file and debug print the contents compressed with Deflate
-fn main() {
- println!("{:?}", open_hello_world().unwrap());
-}
-
-// Opens sample file, compresses the contents and returns a Vector or error
-// File wrapped in a BufReader implements Bufread
-fn open_hello_world() -> io::Result<Vec<u8>> {
- let f = File::open("examples/hello_world.txt")?;
- let b = BufReader::new(f);
- let mut deflater = DeflateEncoder::new(b, Compression::fast());
- let mut buffer = Vec::new();
- deflater.read_to_end(&mut buffer)?;
- Ok(buffer)
-}
diff --git a/vendor/flate2/examples/deflateencoder-read.rs b/vendor/flate2/examples/deflateencoder-read.rs
deleted file mode 100644
index 366c60c..0000000
--- a/vendor/flate2/examples/deflateencoder-read.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-use flate2::read::DeflateEncoder;
-use flate2::Compression;
-use std::io;
-use std::io::prelude::*;
-
-// Print the Deflate compressed representation of hello world
-fn main() {
- println!("{:?}", deflateencoder_read_hello_world().unwrap());
-}
-
-// Return a vector containing the Deflate compressed version of hello world
-fn deflateencoder_read_hello_world() -> io::Result<Vec<u8>> {
- let mut result = Vec::new();
- let c = b"hello world";
- let mut deflater = DeflateEncoder::new(&c[..], Compression::fast());
- deflater.read_to_end(&mut result)?;
- Ok(result)
-}
diff --git a/vendor/flate2/examples/deflateencoder-write.rs b/vendor/flate2/examples/deflateencoder-write.rs
deleted file mode 100644
index f998e1a..0000000
--- a/vendor/flate2/examples/deflateencoder-write.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-use flate2::write::DeflateEncoder;
-use flate2::Compression;
-use std::io::prelude::*;
-
-// Vec<u8> implements Write to print the compressed bytes of sample string
-fn main() {
- let mut e = DeflateEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- println!("{:?}", e.finish().unwrap());
-}
diff --git a/vendor/flate2/examples/gzbuilder.rs b/vendor/flate2/examples/gzbuilder.rs
deleted file mode 100644
index c072508..0000000
--- a/vendor/flate2/examples/gzbuilder.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-use flate2::Compression;
-use flate2::GzBuilder;
-use std::fs::File;
-use std::io;
-use std::io::prelude::*;
-
-// Compresses content of a text file into a gzip file
-fn main() {
- sample_builder().unwrap();
-}
-
-// GzBuilder opens a file and writes a sample string using Builder pattern
-fn sample_builder() -> Result<(), io::Error> {
- let f = File::create("examples/hello_world.txt.gz")?;
- let mut gz = GzBuilder::new()
- .filename("hello_world.txt")
- .comment("test file, please delete")
- .write(f, Compression::default());
- gz.write_all(b"hello world")?;
- gz.finish()?;
- Ok(())
-}
diff --git a/vendor/flate2/examples/gzdecoder-bufread.rs b/vendor/flate2/examples/gzdecoder-bufread.rs
deleted file mode 100644
index 06d0448..0000000
--- a/vendor/flate2/examples/gzdecoder-bufread.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-use flate2::write::GzEncoder;
-use flate2::{bufread, Compression};
-use std::io;
-use std::io::prelude::*;
-
-// Compress a sample string and print it after transformation.
-fn main() {
- let mut e = GzEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- let bytes = e.finish().unwrap();
- println!("{}", decode_reader(bytes).unwrap());
-}
-
-// Uncompresses a Gz Encoded vector of bytes and returns a string or error
-// Here &[u8] implements BufRead
-fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
- let mut gz = bufread::GzDecoder::new(&bytes[..]);
- let mut s = String::new();
- gz.read_to_string(&mut s)?;
- Ok(s)
-}
diff --git a/vendor/flate2/examples/gzdecoder-read.rs b/vendor/flate2/examples/gzdecoder-read.rs
deleted file mode 100644
index fbd05be..0000000
--- a/vendor/flate2/examples/gzdecoder-read.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-use flate2::write::GzEncoder;
-use flate2::{read, Compression};
-use std::io;
-use std::io::prelude::*;
-
-// Compress a sample string and print it after transformation.
-fn main() {
- let mut e = GzEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- let bytes = e.finish().unwrap();
- println!("{}", decode_reader(bytes).unwrap());
-}
-
-// Uncompresses a Gz Encoded vector of bytes and returns a string or error
-// Here &[u8] implements Read
-fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
- let mut gz = read::GzDecoder::new(&bytes[..]);
- let mut s = String::new();
- gz.read_to_string(&mut s)?;
- Ok(s)
-}
diff --git a/vendor/flate2/examples/gzdecoder-write.rs b/vendor/flate2/examples/gzdecoder-write.rs
deleted file mode 100644
index 6cee8f8..0000000
--- a/vendor/flate2/examples/gzdecoder-write.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-use flate2::write::{GzDecoder, GzEncoder};
-use flate2::Compression;
-use std::io;
-use std::io::prelude::*;
-
-// Compress a sample string and print it after transformation.
-fn main() {
- let mut e = GzEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- let bytes = e.finish().unwrap();
- println!("{}", decode_writer(bytes).unwrap());
-}
-
-// Uncompresses a Gz Encoded vector of bytes and returns a string or error
-// Here &[u8] implements Read
-fn decode_writer(bytes: Vec<u8>) -> io::Result<String> {
- let mut writer = Vec::new();
- let mut decoder = GzDecoder::new(writer);
- decoder.write_all(&bytes[..])?;
- decoder.try_finish()?;
- writer = decoder.finish()?;
- let return_string = String::from_utf8(writer).expect("String parsing error");
- Ok(return_string)
-}
diff --git a/vendor/flate2/examples/gzencoder-bufread.rs b/vendor/flate2/examples/gzencoder-bufread.rs
deleted file mode 100644
index 2214e2d..0000000
--- a/vendor/flate2/examples/gzencoder-bufread.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-use flate2::bufread::GzEncoder;
-use flate2::Compression;
-use std::fs::File;
-use std::io;
-use std::io::prelude::*;
-use std::io::BufReader;
-
-// Open file and debug print the contents compressed with gzip
-fn main() {
- println!("{:?}", open_hello_world().unwrap());
-}
-
-// Opens sample file, compresses the contents and returns a Vector or error
-// File wrapped in a BufReader implements Bufread
-fn open_hello_world() -> io::Result<Vec<u8>> {
- let f = File::open("examples/hello_world.txt")?;
- let b = BufReader::new(f);
- let mut gz = GzEncoder::new(b, Compression::fast());
- let mut buffer = Vec::new();
- gz.read_to_end(&mut buffer)?;
- Ok(buffer)
-}
diff --git a/vendor/flate2/examples/gzencoder-read.rs b/vendor/flate2/examples/gzencoder-read.rs
deleted file mode 100644
index ee13848..0000000
--- a/vendor/flate2/examples/gzencoder-read.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-use flate2::read::GzEncoder;
-use flate2::Compression;
-use std::io;
-use std::io::prelude::*;
-
-// Print the GZ compressed representation of hello world
-fn main() {
- println!("{:?}", gzencoder_read_hello_world().unwrap());
-}
-
-// Return a vector containing the GZ compressed version of hello world
-fn gzencoder_read_hello_world() -> io::Result<Vec<u8>> {
- let mut result = Vec::new();
- let c = b"hello world";
- let mut z = GzEncoder::new(&c[..], Compression::fast());
- z.read_to_end(&mut result)?;
- Ok(result)
-}
diff --git a/vendor/flate2/examples/gzencoder-write.rs b/vendor/flate2/examples/gzencoder-write.rs
deleted file mode 100644
index cee01d1..0000000
--- a/vendor/flate2/examples/gzencoder-write.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-use flate2::write::GzEncoder;
-use flate2::Compression;
-use std::io::prelude::*;
-
-// Vec<u8> implements Write to print the compressed bytes of sample string
-fn main() {
- let mut e = GzEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- println!("{:?}", e.finish().unwrap());
-}
diff --git a/vendor/flate2/examples/gzmultidecoder-bufread.rs b/vendor/flate2/examples/gzmultidecoder-bufread.rs
deleted file mode 100644
index 692b6f5..0000000
--- a/vendor/flate2/examples/gzmultidecoder-bufread.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-use flate2::bufread::MultiGzDecoder;
-use flate2::write::GzEncoder;
-use flate2::Compression;
-use std::io;
-use std::io::prelude::*;
-
-// Compress a sample string and print it after transformation.
-fn main() {
- let mut e = GzEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- let bytes = e.finish().unwrap();
- println!("{}", decode_reader(bytes).unwrap());
-}
-
-// Uncompresses a Gz Encoded vector of bytes and returns a string or error
-// Here &[u8] implements BufRead
-fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
- let mut gz = MultiGzDecoder::new(&bytes[..]);
- let mut s = String::new();
- gz.read_to_string(&mut s)?;
- Ok(s)
-}
diff --git a/vendor/flate2/examples/gzmultidecoder-read.rs b/vendor/flate2/examples/gzmultidecoder-read.rs
deleted file mode 100644
index c59561d..0000000
--- a/vendor/flate2/examples/gzmultidecoder-read.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-use flate2::read::MultiGzDecoder;
-use flate2::write::GzEncoder;
-use flate2::Compression;
-use std::io;
-use std::io::prelude::*;
-
-// Compress a sample string and print it after transformation.
-fn main() {
- let mut e = GzEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- let bytes = e.finish().unwrap();
- println!("{}", decode_reader(bytes).unwrap());
-}
-
-// Uncompresses a Gz Encoded vector of bytes and returns a string or error
-// Here &[u8] implements Read
-fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
- let mut gz = MultiGzDecoder::new(&bytes[..]);
- let mut s = String::new();
- gz.read_to_string(&mut s)?;
- Ok(s)
-}
diff --git a/vendor/flate2/examples/hello_world.txt b/vendor/flate2/examples/hello_world.txt
deleted file mode 100644
index 557db03..0000000
--- a/vendor/flate2/examples/hello_world.txt
+++ /dev/null
@@ -1 +0,0 @@
-Hello World
diff --git a/vendor/flate2/examples/hello_world.txt.gz b/vendor/flate2/examples/hello_world.txt.gz
deleted file mode 100644
index bab9799..0000000
--- a/vendor/flate2/examples/hello_world.txt.gz
+++ /dev/null
Binary files differ
diff --git a/vendor/flate2/examples/zlibdecoder-bufread.rs b/vendor/flate2/examples/zlibdecoder-bufread.rs
deleted file mode 100644
index 82620c5..0000000
--- a/vendor/flate2/examples/zlibdecoder-bufread.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-use flate2::bufread::ZlibDecoder;
-use flate2::write::ZlibEncoder;
-use flate2::Compression;
-use std::io;
-use std::io::prelude::*;
-
-// Compress a sample string and print it after transformation.
-fn main() {
- let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- let bytes = e.finish().unwrap();
- println!("{}", decode_bufreader(bytes).unwrap());
-}
-
-// Uncompresses a Zlib Encoded vector of bytes and returns a string or error
-// Here &[u8] implements BufRead
-fn decode_bufreader(bytes: Vec<u8>) -> io::Result<String> {
- let mut z = ZlibDecoder::new(&bytes[..]);
- let mut s = String::new();
- z.read_to_string(&mut s)?;
- Ok(s)
-}
diff --git a/vendor/flate2/examples/zlibdecoder-read.rs b/vendor/flate2/examples/zlibdecoder-read.rs
deleted file mode 100644
index 3d4cda7..0000000
--- a/vendor/flate2/examples/zlibdecoder-read.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-use flate2::read::ZlibDecoder;
-use flate2::write::ZlibEncoder;
-use flate2::Compression;
-use std::io;
-use std::io::prelude::*;
-
-// Compress a sample string and print it after transformation.
-fn main() {
- let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- let bytes = e.finish().unwrap();
- println!("{}", decode_reader(bytes).unwrap());
-}
-
-// Uncompresses a Zlib Encoded vector of bytes and returns a string or error
-// Here &[u8] implements Read
-fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
- let mut z = ZlibDecoder::new(&bytes[..]);
- let mut s = String::new();
- z.read_to_string(&mut s)?;
- Ok(s)
-}
diff --git a/vendor/flate2/examples/zlibdecoder-write.rs b/vendor/flate2/examples/zlibdecoder-write.rs
deleted file mode 100644
index 7f5afbe..0000000
--- a/vendor/flate2/examples/zlibdecoder-write.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-use flate2::write::ZlibDecoder;
-use flate2::write::ZlibEncoder;
-use flate2::Compression;
-use std::io;
-use std::io::prelude::*;
-
-// Compress a sample string and print it after transformation.
-fn main() {
- let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- let bytes = e.finish().unwrap();
- println!("{}", decode_reader(bytes).unwrap());
-}
-
-// Uncompresses a Zlib Encoded vector of bytes and returns a string or error
-// Here Vec<u8> implements Write
-fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
- let mut writer = Vec::new();
- let mut z = ZlibDecoder::new(writer);
- z.write_all(&bytes[..])?;
- writer = z.finish()?;
- let return_string = String::from_utf8(writer).expect("String parsing error");
- Ok(return_string)
-}
diff --git a/vendor/flate2/examples/zlibencoder-bufread.rs b/vendor/flate2/examples/zlibencoder-bufread.rs
deleted file mode 100644
index e5e17f5..0000000
--- a/vendor/flate2/examples/zlibencoder-bufread.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-use flate2::bufread::ZlibEncoder;
-use flate2::Compression;
-use std::fs::File;
-use std::io;
-use std::io::prelude::*;
-use std::io::BufReader;
-
-// Open file and debug print the contents compressed with zlib
-fn main() {
- println!("{:?}", open_hello_world().unwrap());
-}
-
-// Opens sample file, compresses the contents and returns a Vector or error
-// File wrapped in a BufReader implements Bufread
-fn open_hello_world() -> io::Result<Vec<u8>> {
- let f = File::open("examples/hello_world.txt")?;
- let b = BufReader::new(f);
- let mut z = ZlibEncoder::new(b, Compression::fast());
- let mut buffer = Vec::new();
- z.read_to_end(&mut buffer)?;
- Ok(buffer)
-}
diff --git a/vendor/flate2/examples/zlibencoder-read.rs b/vendor/flate2/examples/zlibencoder-read.rs
deleted file mode 100644
index f833a50..0000000
--- a/vendor/flate2/examples/zlibencoder-read.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-use flate2::read::ZlibEncoder;
-use flate2::Compression;
-use std::fs::File;
-use std::io::prelude::*;
-
-// Open file and debug print the compressed contents
-fn main() {
- println!("{:?}", open_hello_world().unwrap());
-}
-
-// Opens sample file, compresses the contents and returns a Vector or error
-// File implements Read
-fn open_hello_world() -> std::io::Result<Vec<u8>> {
- let f = File::open("examples/hello_world.txt")?;
- let mut z = ZlibEncoder::new(f, Compression::fast());
- let mut result = Vec::new();
- z.read_to_end(&mut result)?;
- Ok(result)
-}
diff --git a/vendor/flate2/examples/zlibencoder-write.rs b/vendor/flate2/examples/zlibencoder-write.rs
deleted file mode 100644
index 3e3548f..0000000
--- a/vendor/flate2/examples/zlibencoder-write.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-use flate2::write::ZlibEncoder;
-use flate2::Compression;
-use std::io::prelude::*;
-
-// Vec<u8> implements Write to print the compressed bytes of sample string
-fn main() {
- let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"Hello World").unwrap();
- println!("{:?}", e.finish().unwrap());
-}
diff --git a/vendor/flate2/src/bufreader.rs b/vendor/flate2/src/bufreader.rs
deleted file mode 100644
index 7e6f89d..0000000
--- a/vendor/flate2/src/bufreader.rs
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// <https://github.com/rust-lang/rust/blob/HEAD/COPYRIGHT>.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-use std::cmp;
-use std::io;
-use std::io::prelude::*;
-use std::mem;
-
-pub struct BufReader<R> {
- inner: R,
- buf: Box<[u8]>,
- pos: usize,
- cap: usize,
-}
-
-impl<R> ::std::fmt::Debug for BufReader<R>
-where
- R: ::std::fmt::Debug,
-{
- fn fmt(&self, fmt: &mut ::std::fmt::Formatter) -> Result<(), ::std::fmt::Error> {
- fmt.debug_struct("BufReader")
- .field("reader", &self.inner)
- .field(
- "buffer",
- &format_args!("{}/{}", self.cap - self.pos, self.buf.len()),
- )
- .finish()
- }
-}
-
-impl<R: Read> BufReader<R> {
- pub fn new(inner: R) -> BufReader<R> {
- BufReader::with_buf(vec![0; 32 * 1024], inner)
- }
-
- pub fn with_buf(buf: Vec<u8>, inner: R) -> BufReader<R> {
- BufReader {
- inner,
- buf: buf.into_boxed_slice(),
- pos: 0,
- cap: 0,
- }
- }
-}
-
-impl<R> BufReader<R> {
- pub fn get_ref(&self) -> &R {
- &self.inner
- }
-
- pub fn get_mut(&mut self) -> &mut R {
- &mut self.inner
- }
-
- pub fn into_inner(self) -> R {
- self.inner
- }
-
- pub fn reset(&mut self, inner: R) -> R {
- self.pos = 0;
- self.cap = 0;
- mem::replace(&mut self.inner, inner)
- }
-}
-
-impl<R: Read> Read for BufReader<R> {
- fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
- // If we don't have any buffered data and we're doing a massive read
- // (larger than our internal buffer), bypass our internal buffer
- // entirely.
- if self.pos == self.cap && buf.len() >= self.buf.len() {
- return self.inner.read(buf);
- }
- let nread = {
- let mut rem = self.fill_buf()?;
- rem.read(buf)?
- };
- self.consume(nread);
- Ok(nread)
- }
-}
-
-impl<R: Read> BufRead for BufReader<R> {
- fn fill_buf(&mut self) -> io::Result<&[u8]> {
- // If we've reached the end of our internal buffer then we need to fetch
- // some more data from the underlying reader.
- if self.pos == self.cap {
- self.cap = self.inner.read(&mut self.buf)?;
- self.pos = 0;
- }
- Ok(&self.buf[self.pos..self.cap])
- }
-
- fn consume(&mut self, amt: usize) {
- self.pos = cmp::min(self.pos + amt, self.cap);
- }
-}
diff --git a/vendor/flate2/src/crc.rs b/vendor/flate2/src/crc.rs
deleted file mode 100644
index 16f5601..0000000
--- a/vendor/flate2/src/crc.rs
+++ /dev/null
@@ -1,184 +0,0 @@
-//! Simple CRC bindings backed by miniz.c
-
-use std::io;
-use std::io::prelude::*;
-
-use crc32fast::Hasher;
-
-/// The CRC calculated by a [`CrcReader`].
-///
-/// [`CrcReader`]: struct.CrcReader.html
-#[derive(Debug)]
-pub struct Crc {
- amt: u32,
- hasher: Hasher,
-}
-
-/// A wrapper around a [`Read`] that calculates the CRC.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-#[derive(Debug)]
-pub struct CrcReader<R> {
- inner: R,
- crc: Crc,
-}
-
-impl Default for Crc {
- fn default() -> Self {
- Self::new()
- }
-}
-
-impl Crc {
- /// Create a new CRC.
- pub fn new() -> Crc {
- Crc {
- amt: 0,
- hasher: Hasher::new(),
- }
- }
-
- /// Returns the current crc32 checksum.
- pub fn sum(&self) -> u32 {
- self.hasher.clone().finalize()
- }
-
- /// The number of bytes that have been used to calculate the CRC.
- /// This value is only accurate if the amount is lower than 2<sup>32</sup>.
- pub fn amount(&self) -> u32 {
- self.amt
- }
-
- /// Update the CRC with the bytes in `data`.
- pub fn update(&mut self, data: &[u8]) {
- self.amt = self.amt.wrapping_add(data.len() as u32);
- self.hasher.update(data);
- }
-
- /// Reset the CRC.
- pub fn reset(&mut self) {
- self.amt = 0;
- self.hasher.reset();
- }
-
- /// Combine the CRC with the CRC for the subsequent block of bytes.
- pub fn combine(&mut self, additional_crc: &Crc) {
- self.amt = self.amt.wrapping_add(additional_crc.amt);
- self.hasher.combine(&additional_crc.hasher);
- }
-}
-
-impl<R: Read> CrcReader<R> {
- /// Create a new `CrcReader`.
- pub fn new(r: R) -> CrcReader<R> {
- CrcReader {
- inner: r,
- crc: Crc::new(),
- }
- }
-}
-
-impl<R> CrcReader<R> {
- /// Get the Crc for this `CrcReader`.
- pub fn crc(&self) -> &Crc {
- &self.crc
- }
-
- /// Get the reader that is wrapped by this `CrcReader`.
- pub fn into_inner(self) -> R {
- self.inner
- }
-
- /// Get the reader that is wrapped by this `CrcReader` by reference.
- pub fn get_ref(&self) -> &R {
- &self.inner
- }
-
- /// Get a mutable reference to the reader that is wrapped by this `CrcReader`.
- pub fn get_mut(&mut self) -> &mut R {
- &mut self.inner
- }
-
- /// Reset the Crc in this `CrcReader`.
- pub fn reset(&mut self) {
- self.crc.reset();
- }
-}
-
-impl<R: Read> Read for CrcReader<R> {
- fn read(&mut self, into: &mut [u8]) -> io::Result<usize> {
- let amt = self.inner.read(into)?;
- self.crc.update(&into[..amt]);
- Ok(amt)
- }
-}
-
-impl<R: BufRead> BufRead for CrcReader<R> {
- fn fill_buf(&mut self) -> io::Result<&[u8]> {
- self.inner.fill_buf()
- }
- fn consume(&mut self, amt: usize) {
- if let Ok(data) = self.inner.fill_buf() {
- self.crc.update(&data[..amt]);
- }
- self.inner.consume(amt);
- }
-}
-
-/// A wrapper around a [`Write`] that calculates the CRC.
-///
-/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
-#[derive(Debug)]
-pub struct CrcWriter<W> {
- inner: W,
- crc: Crc,
-}
-
-impl<W> CrcWriter<W> {
- /// Get the Crc for this `CrcWriter`.
- pub fn crc(&self) -> &Crc {
- &self.crc
- }
-
- /// Get the writer that is wrapped by this `CrcWriter`.
- pub fn into_inner(self) -> W {
- self.inner
- }
-
- /// Get the writer that is wrapped by this `CrcWriter` by reference.
- pub fn get_ref(&self) -> &W {
- &self.inner
- }
-
- /// Get a mutable reference to the writer that is wrapped by this `CrcWriter`.
- pub fn get_mut(&mut self) -> &mut W {
- &mut self.inner
- }
-
- /// Reset the Crc in this `CrcWriter`.
- pub fn reset(&mut self) {
- self.crc.reset();
- }
-}
-
-impl<W: Write> CrcWriter<W> {
- /// Create a new `CrcWriter`.
- pub fn new(w: W) -> CrcWriter<W> {
- CrcWriter {
- inner: w,
- crc: Crc::new(),
- }
- }
-}
-
-impl<W: Write> Write for CrcWriter<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- let amt = self.inner.write(buf)?;
- self.crc.update(&buf[..amt]);
- Ok(amt)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.inner.flush()
- }
-}
diff --git a/vendor/flate2/src/deflate/bufread.rs b/vendor/flate2/src/deflate/bufread.rs
deleted file mode 100644
index c70a630..0000000
--- a/vendor/flate2/src/deflate/bufread.rs
+++ /dev/null
@@ -1,245 +0,0 @@
-use std::io;
-use std::io::prelude::*;
-use std::mem;
-
-use crate::zio;
-use crate::{Compress, Decompress};
-
-/// A DEFLATE encoder, or compressor.
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// uncompressed data from the underlying [`BufRead`] and provides the compressed data.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// use flate2::Compression;
-/// use flate2::bufread::DeflateEncoder;
-/// use std::fs::File;
-/// use std::io::BufReader;
-///
-/// # fn main() {
-/// # println!("{:?}", open_hello_world().unwrap());
-/// # }
-/// #
-/// // Opens sample file, compresses the contents and returns a Vector
-/// fn open_hello_world() -> io::Result<Vec<u8>> {
-/// let f = File::open("examples/hello_world.txt")?;
-/// let b = BufReader::new(f);
-/// let mut deflater = DeflateEncoder::new(b, Compression::fast());
-/// let mut buffer = Vec::new();
-/// deflater.read_to_end(&mut buffer)?;
-/// Ok(buffer)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct DeflateEncoder<R> {
- obj: R,
- data: Compress,
-}
-
-impl<R: BufRead> DeflateEncoder<R> {
- /// Creates a new encoder which will read uncompressed data from the given
- /// stream and emit the compressed stream.
- pub fn new(r: R, level: crate::Compression) -> DeflateEncoder<R> {
- DeflateEncoder {
- obj: r,
- data: Compress::new(level, false),
- }
- }
-}
-
-pub fn reset_encoder_data<R>(zlib: &mut DeflateEncoder<R>) {
- zlib.data.reset();
-}
-
-impl<R> DeflateEncoder<R> {
- /// Resets the state of this encoder entirely, swapping out the input
- /// stream for another.
- ///
- /// This function will reset the internal state of this encoder and replace
- /// the input stream with the one provided, returning the previous input
- /// stream. Future data read from this encoder will be the compressed
- /// version of `r`'s data.
- pub fn reset(&mut self, r: R) -> R {
- reset_encoder_data(self);
- mem::replace(&mut self.obj, r)
- }
-
- /// Acquires a reference to the underlying reader
- pub fn get_ref(&self) -> &R {
- &self.obj
- }
-
- /// Acquires a mutable reference to the underlying stream
- ///
- /// Note that mutation of the stream may result in surprising results if
- /// this encoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- &mut self.obj
- }
-
- /// Consumes this encoder, returning the underlying reader.
- pub fn into_inner(self) -> R {
- self.obj
- }
-
- /// Returns the number of bytes that have been read into this compressor.
- ///
- /// Note that not all bytes read from the underlying object may be accounted
- /// for, there may still be some active buffering.
- pub fn total_in(&self) -> u64 {
- self.data.total_in()
- }
-
- /// Returns the number of bytes that the compressor has produced.
- ///
- /// Note that not all bytes may have been read yet, some may still be
- /// buffered.
- pub fn total_out(&self) -> u64 {
- self.data.total_out()
- }
-}
-
-impl<R: BufRead> Read for DeflateEncoder<R> {
- fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
- zio::read(&mut self.obj, &mut self.data, buf)
- }
-}
-
-impl<W: BufRead + Write> Write for DeflateEncoder<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
-
-/// A DEFLATE decoder, or decompressor.
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// compressed data from the underlying [`BufRead`] and provides the uncompressed data.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// # use flate2::Compression;
-/// # use flate2::write::DeflateEncoder;
-/// use flate2::bufread::DeflateDecoder;
-///
-/// # fn main() {
-/// # let mut e = DeflateEncoder::new(Vec::new(), Compression::default());
-/// # e.write_all(b"Hello World").unwrap();
-/// # let bytes = e.finish().unwrap();
-/// # println!("{}", decode_reader(bytes).unwrap());
-/// # }
-/// // Uncompresses a Deflate Encoded vector of bytes and returns a string or error
-/// // Here &[u8] implements Read
-/// fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
-/// let mut deflater = DeflateDecoder::new(&bytes[..]);
-/// let mut s = String::new();
-/// deflater.read_to_string(&mut s)?;
-/// Ok(s)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct DeflateDecoder<R> {
- obj: R,
- data: Decompress,
-}
-
-pub fn reset_decoder_data<R>(zlib: &mut DeflateDecoder<R>) {
- zlib.data = Decompress::new(false);
-}
-
-impl<R: BufRead> DeflateDecoder<R> {
- /// Creates a new decoder which will decompress data read from the given
- /// stream.
- pub fn new(r: R) -> DeflateDecoder<R> {
- DeflateDecoder {
- obj: r,
- data: Decompress::new(false),
- }
- }
-}
-
-impl<R> DeflateDecoder<R> {
- /// Resets the state of this decoder entirely, swapping out the input
- /// stream for another.
- ///
- /// This will reset the internal state of this decoder and replace the
- /// input stream with the one provided, returning the previous input
- /// stream. Future data read from this decoder will be the decompressed
- /// version of `r`'s data.
- pub fn reset(&mut self, r: R) -> R {
- reset_decoder_data(self);
- mem::replace(&mut self.obj, r)
- }
-
- /// Resets the state of this decoder's data
- ///
- /// This will reset the internal state of this decoder. It will continue
- /// reading from the same stream.
- pub fn reset_data(&mut self) {
- reset_decoder_data(self);
- }
-
- /// Acquires a reference to the underlying stream
- pub fn get_ref(&self) -> &R {
- &self.obj
- }
-
- /// Acquires a mutable reference to the underlying stream
- ///
- /// Note that mutation of the stream may result in surprising results if
- /// this decoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- &mut self.obj
- }
-
- /// Consumes this decoder, returning the underlying reader.
- pub fn into_inner(self) -> R {
- self.obj
- }
-
- /// Returns the number of bytes that the decompressor has consumed.
- ///
- /// Note that this will likely be smaller than what the decompressor
- /// actually read from the underlying stream due to buffering.
- pub fn total_in(&self) -> u64 {
- self.data.total_in()
- }
-
- /// Returns the number of bytes that the decompressor has produced.
- pub fn total_out(&self) -> u64 {
- self.data.total_out()
- }
-}
-
-impl<R: BufRead> Read for DeflateDecoder<R> {
- fn read(&mut self, into: &mut [u8]) -> io::Result<usize> {
- zio::read(&mut self.obj, &mut self.data, into)
- }
-}
-
-impl<W: BufRead + Write> Write for DeflateDecoder<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
diff --git a/vendor/flate2/src/deflate/mod.rs b/vendor/flate2/src/deflate/mod.rs
deleted file mode 100644
index 7f3bf70..0000000
--- a/vendor/flate2/src/deflate/mod.rs
+++ /dev/null
@@ -1,193 +0,0 @@
-pub mod bufread;
-pub mod read;
-pub mod write;
-
-#[cfg(test)]
-mod tests {
- use std::io::prelude::*;
-
- use rand::{thread_rng, Rng};
-
- use super::{read, write};
- use crate::Compression;
-
- #[test]
- fn roundtrip() {
- let mut real = Vec::new();
- let mut w = write::DeflateEncoder::new(Vec::new(), Compression::default());
- let v = crate::random_bytes().take(1024).collect::<Vec<_>>();
- for _ in 0..200 {
- let to_write = &v[..thread_rng().gen_range(0..v.len())];
- real.extend(to_write.iter().copied());
- w.write_all(to_write).unwrap();
- }
- let result = w.finish().unwrap();
- let mut r = read::DeflateDecoder::new(&result[..]);
- let mut ret = Vec::new();
- r.read_to_end(&mut ret).unwrap();
- assert_eq!(ret, real);
- }
-
- #[test]
- fn drop_writes() {
- let mut data = Vec::new();
- write::DeflateEncoder::new(&mut data, Compression::default())
- .write_all(b"foo")
- .unwrap();
- let mut r = read::DeflateDecoder::new(&data[..]);
- let mut ret = Vec::new();
- r.read_to_end(&mut ret).unwrap();
- assert_eq!(ret, b"foo");
- }
-
- #[test]
- fn total_in() {
- let mut real = Vec::new();
- let mut w = write::DeflateEncoder::new(Vec::new(), Compression::default());
- let v = crate::random_bytes().take(1024).collect::<Vec<_>>();
- for _ in 0..200 {
- let to_write = &v[..thread_rng().gen_range(0..v.len())];
- real.extend(to_write.iter().copied());
- w.write_all(to_write).unwrap();
- }
- let mut result = w.finish().unwrap();
-
- let result_len = result.len();
-
- for _ in 0..200 {
- result.extend(v.iter().copied());
- }
-
- let mut r = read::DeflateDecoder::new(&result[..]);
- let mut ret = Vec::new();
- r.read_to_end(&mut ret).unwrap();
- assert_eq!(ret, real);
- assert_eq!(r.total_in(), result_len as u64);
- }
-
- #[test]
- fn roundtrip2() {
- let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>();
- let mut r =
- read::DeflateDecoder::new(read::DeflateEncoder::new(&v[..], Compression::default()));
- let mut ret = Vec::new();
- r.read_to_end(&mut ret).unwrap();
- assert_eq!(ret, v);
- }
-
- #[test]
- fn roundtrip3() {
- let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>();
- let mut w = write::DeflateEncoder::new(
- write::DeflateDecoder::new(Vec::new()),
- Compression::default(),
- );
- w.write_all(&v).unwrap();
- let w = w.finish().unwrap().finish().unwrap();
- assert_eq!(w, v);
- }
-
- #[test]
- fn reset_writer() {
- let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>();
- let mut w = write::DeflateEncoder::new(Vec::new(), Compression::default());
- w.write_all(&v).unwrap();
- let a = w.reset(Vec::new()).unwrap();
- w.write_all(&v).unwrap();
- let b = w.finish().unwrap();
-
- let mut w = write::DeflateEncoder::new(Vec::new(), Compression::default());
- w.write_all(&v).unwrap();
- let c = w.finish().unwrap();
- assert!(a == b && b == c);
- }
-
- #[test]
- fn reset_reader() {
- let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>();
- let (mut a, mut b, mut c) = (Vec::new(), Vec::new(), Vec::new());
- let mut r = read::DeflateEncoder::new(&v[..], Compression::default());
- r.read_to_end(&mut a).unwrap();
- r.reset(&v[..]);
- r.read_to_end(&mut b).unwrap();
-
- let mut r = read::DeflateEncoder::new(&v[..], Compression::default());
- r.read_to_end(&mut c).unwrap();
- assert!(a == b && b == c);
- }
-
- #[test]
- fn reset_decoder() {
- let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>();
- let mut w = write::DeflateEncoder::new(Vec::new(), Compression::default());
- w.write_all(&v).unwrap();
- let data = w.finish().unwrap();
-
- {
- let (mut a, mut b, mut c) = (Vec::new(), Vec::new(), Vec::new());
- let mut r = read::DeflateDecoder::new(&data[..]);
- r.read_to_end(&mut a).unwrap();
- r.reset(&data);
- r.read_to_end(&mut b).unwrap();
-
- let mut r = read::DeflateDecoder::new(&data[..]);
- r.read_to_end(&mut c).unwrap();
- assert!(a == b && b == c && c == v);
- }
-
- {
- let mut w = write::DeflateDecoder::new(Vec::new());
- w.write_all(&data).unwrap();
- let a = w.reset(Vec::new()).unwrap();
- w.write_all(&data).unwrap();
- let b = w.finish().unwrap();
-
- let mut w = write::DeflateDecoder::new(Vec::new());
- w.write_all(&data).unwrap();
- let c = w.finish().unwrap();
- assert!(a == b && b == c && c == v);
- }
- }
-
- #[test]
- fn zero_length_read_with_data() {
- let m = vec![3u8; 128 * 1024 + 1];
- let mut c = read::DeflateEncoder::new(&m[..], Compression::default());
-
- let mut result = Vec::new();
- c.read_to_end(&mut result).unwrap();
-
- let mut d = read::DeflateDecoder::new(&result[..]);
- let mut data = Vec::new();
- assert_eq!(d.read(&mut data).unwrap(), 0);
- }
-
- #[test]
- fn qc_reader() {
- ::quickcheck::quickcheck(test as fn(_) -> _);
-
- fn test(v: Vec<u8>) -> bool {
- let mut r = read::DeflateDecoder::new(read::DeflateEncoder::new(
- &v[..],
- Compression::default(),
- ));
- let mut v2 = Vec::new();
- r.read_to_end(&mut v2).unwrap();
- v == v2
- }
- }
-
- #[test]
- fn qc_writer() {
- ::quickcheck::quickcheck(test as fn(_) -> _);
-
- fn test(v: Vec<u8>) -> bool {
- let mut w = write::DeflateEncoder::new(
- write::DeflateDecoder::new(Vec::new()),
- Compression::default(),
- );
- w.write_all(&v).unwrap();
- v == w.finish().unwrap().finish().unwrap()
- }
- }
-}
diff --git a/vendor/flate2/src/deflate/read.rs b/vendor/flate2/src/deflate/read.rs
deleted file mode 100644
index 2b6b8f2..0000000
--- a/vendor/flate2/src/deflate/read.rs
+++ /dev/null
@@ -1,241 +0,0 @@
-use std::io;
-use std::io::prelude::*;
-
-use super::bufread;
-use crate::bufreader::BufReader;
-
-/// A DEFLATE encoder, or compressor.
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// uncompressed data from the underlying [`Read`] and provides the compressed data.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// use flate2::Compression;
-/// use flate2::read::DeflateEncoder;
-///
-/// # fn main() {
-/// # println!("{:?}", deflateencoder_read_hello_world().unwrap());
-/// # }
-/// #
-/// // Return a vector containing the Deflate compressed version of hello world
-/// fn deflateencoder_read_hello_world() -> io::Result<Vec<u8>> {
-/// let mut ret_vec = Vec::new();
-/// let c = b"hello world";
-/// let mut deflater = DeflateEncoder::new(&c[..], Compression::fast());
-/// deflater.read_to_end(&mut ret_vec)?;
-/// Ok(ret_vec)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct DeflateEncoder<R> {
- inner: bufread::DeflateEncoder<BufReader<R>>,
-}
-
-impl<R: Read> DeflateEncoder<R> {
- /// Creates a new encoder which will read uncompressed data from the given
- /// stream and emit the compressed stream.
- pub fn new(r: R, level: crate::Compression) -> DeflateEncoder<R> {
- DeflateEncoder {
- inner: bufread::DeflateEncoder::new(BufReader::new(r), level),
- }
- }
-}
-
-impl<R> DeflateEncoder<R> {
- /// Resets the state of this encoder entirely, swapping out the input
- /// stream for another.
- ///
- /// This function will reset the internal state of this encoder and replace
- /// the input stream with the one provided, returning the previous input
- /// stream. Future data read from this encoder will be the compressed
- /// version of `r`'s data.
- ///
- /// Note that there may be currently buffered data when this function is
- /// called, and in that case the buffered data is discarded.
- pub fn reset(&mut self, r: R) -> R {
- super::bufread::reset_encoder_data(&mut self.inner);
- self.inner.get_mut().reset(r)
- }
-
- /// Acquires a reference to the underlying reader
- pub fn get_ref(&self) -> &R {
- self.inner.get_ref().get_ref()
- }
-
- /// Acquires a mutable reference to the underlying stream
- ///
- /// Note that mutation of the stream may result in surprising results if
- /// this encoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- self.inner.get_mut().get_mut()
- }
-
- /// Consumes this encoder, returning the underlying reader.
- ///
- /// Note that there may be buffered bytes which are not re-acquired as part
- /// of this transition. It's recommended to only call this function after
- /// EOF has been reached.
- pub fn into_inner(self) -> R {
- self.inner.into_inner().into_inner()
- }
-
- /// Returns the number of bytes that have been read into this compressor.
- ///
- /// Note that not all bytes read from the underlying object may be accounted
- /// for, there may still be some active buffering.
- pub fn total_in(&self) -> u64 {
- self.inner.total_in()
- }
-
- /// Returns the number of bytes that the compressor has produced.
- ///
- /// Note that not all bytes may have been read yet, some may still be
- /// buffered.
- pub fn total_out(&self) -> u64 {
- self.inner.total_out()
- }
-}
-
-impl<R: Read> Read for DeflateEncoder<R> {
- fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
- self.inner.read(buf)
- }
-}
-
-impl<W: Read + Write> Write for DeflateEncoder<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
-
-/// A DEFLATE decoder, or decompressor.
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// compressed data from the underlying [`Read`] and provides the uncompressed data.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// # use flate2::Compression;
-/// # use flate2::write::DeflateEncoder;
-/// use flate2::read::DeflateDecoder;
-///
-/// # fn main() {
-/// # let mut e = DeflateEncoder::new(Vec::new(), Compression::default());
-/// # e.write_all(b"Hello World").unwrap();
-/// # let bytes = e.finish().unwrap();
-/// # println!("{}", decode_reader(bytes).unwrap());
-/// # }
-/// // Uncompresses a Deflate Encoded vector of bytes and returns a string or error
-/// // Here &[u8] implements Read
-/// fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
-/// let mut deflater = DeflateDecoder::new(&bytes[..]);
-/// let mut s = String::new();
-/// deflater.read_to_string(&mut s)?;
-/// Ok(s)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct DeflateDecoder<R> {
- inner: bufread::DeflateDecoder<BufReader<R>>,
-}
-
-impl<R: Read> DeflateDecoder<R> {
- /// Creates a new decoder which will decompress data read from the given
- /// stream.
- pub fn new(r: R) -> DeflateDecoder<R> {
- DeflateDecoder::new_with_buf(r, vec![0; 32 * 1024])
- }
-
- /// Same as `new`, but the intermediate buffer for data is specified.
- ///
- /// Note that the capacity of the intermediate buffer is never increased,
- /// and it is recommended for it to be large.
- pub fn new_with_buf(r: R, buf: Vec<u8>) -> DeflateDecoder<R> {
- DeflateDecoder {
- inner: bufread::DeflateDecoder::new(BufReader::with_buf(buf, r)),
- }
- }
-}
-
-impl<R> DeflateDecoder<R> {
- /// Resets the state of this decoder entirely, swapping out the input
- /// stream for another.
- ///
- /// This will reset the internal state of this decoder and replace the
- /// input stream with the one provided, returning the previous input
- /// stream. Future data read from this decoder will be the decompressed
- /// version of `r`'s data.
- ///
- /// Note that there may be currently buffered data when this function is
- /// called, and in that case the buffered data is discarded.
- pub fn reset(&mut self, r: R) -> R {
- super::bufread::reset_decoder_data(&mut self.inner);
- self.inner.get_mut().reset(r)
- }
-
- /// Acquires a reference to the underlying stream
- pub fn get_ref(&self) -> &R {
- self.inner.get_ref().get_ref()
- }
-
- /// Acquires a mutable reference to the underlying stream
- ///
- /// Note that mutation of the stream may result in surprising results if
- /// this decoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- self.inner.get_mut().get_mut()
- }
-
- /// Consumes this decoder, returning the underlying reader.
- ///
- /// Note that there may be buffered bytes which are not re-acquired as part
- /// of this transition. It's recommended to only call this function after
- /// EOF has been reached.
- pub fn into_inner(self) -> R {
- self.inner.into_inner().into_inner()
- }
-
- /// Returns the number of bytes that the decompressor has consumed.
- ///
- /// Note that this will likely be smaller than what the decompressor
- /// actually read from the underlying stream due to buffering.
- pub fn total_in(&self) -> u64 {
- self.inner.total_in()
- }
-
- /// Returns the number of bytes that the decompressor has produced.
- pub fn total_out(&self) -> u64 {
- self.inner.total_out()
- }
-}
-
-impl<R: Read> Read for DeflateDecoder<R> {
- fn read(&mut self, into: &mut [u8]) -> io::Result<usize> {
- self.inner.read(into)
- }
-}
-
-impl<W: Read + Write> Write for DeflateDecoder<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
diff --git a/vendor/flate2/src/deflate/write.rs b/vendor/flate2/src/deflate/write.rs
deleted file mode 100644
index 2c44556..0000000
--- a/vendor/flate2/src/deflate/write.rs
+++ /dev/null
@@ -1,322 +0,0 @@
-use std::io;
-use std::io::prelude::*;
-
-use crate::zio;
-use crate::{Compress, Decompress};
-
-/// A DEFLATE encoder, or compressor.
-///
-/// This structure implements a [`Write`] interface and takes a stream of
-/// uncompressed data, writing the compressed data to the wrapped writer.
-///
-/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use flate2::Compression;
-/// use flate2::write::DeflateEncoder;
-///
-/// // Vec<u8> implements Write to print the compressed bytes of sample string
-/// # fn main() {
-///
-/// let mut e = DeflateEncoder::new(Vec::new(), Compression::default());
-/// e.write_all(b"Hello World").unwrap();
-/// println!("{:?}", e.finish().unwrap());
-/// # }
-/// ```
-#[derive(Debug)]
-pub struct DeflateEncoder<W: Write> {
- inner: zio::Writer<W, Compress>,
-}
-
-impl<W: Write> DeflateEncoder<W> {
- /// Creates a new encoder which will write compressed data to the stream
- /// given at the given compression level.
- ///
- /// When this encoder is dropped or unwrapped the final pieces of data will
- /// be flushed.
- pub fn new(w: W, level: crate::Compression) -> DeflateEncoder<W> {
- DeflateEncoder {
- inner: zio::Writer::new(w, Compress::new(level, false)),
- }
- }
-
- /// Acquires a reference to the underlying writer.
- pub fn get_ref(&self) -> &W {
- self.inner.get_ref()
- }
-
- /// Acquires a mutable reference to the underlying writer.
- ///
- /// Note that mutating the output/input state of the stream may corrupt this
- /// object, so care must be taken when using this method.
- pub fn get_mut(&mut self) -> &mut W {
- self.inner.get_mut()
- }
-
- /// Resets the state of this encoder entirely, swapping out the output
- /// stream for another.
- ///
- /// This function will finish encoding the current stream into the current
- /// output stream before swapping out the two output streams. If the stream
- /// cannot be finished an error is returned.
- ///
- /// After the current stream has been finished, this will reset the internal
- /// state of this encoder and replace the output stream with the one
- /// provided, returning the previous output stream. Future data written to
- /// this encoder will be the compressed into the stream `w` provided.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn reset(&mut self, w: W) -> io::Result<W> {
- self.inner.finish()?;
- self.inner.data.reset();
- Ok(self.inner.replace(w))
- }
-
- /// Attempt to finish this output stream, writing out final chunks of data.
- ///
- /// Note that this function can only be used once data has finished being
- /// written to the output stream. After this function is called then further
- /// calls to `write` may result in a panic.
- ///
- /// # Panics
- ///
- /// Attempts to write data to this stream may result in a panic after this
- /// function is called.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn try_finish(&mut self) -> io::Result<()> {
- self.inner.finish()
- }
-
- /// Consumes this encoder, flushing the output stream.
- ///
- /// This will flush the underlying data stream, close off the compressed
- /// stream and, if successful, return the contained writer.
- ///
- /// Note that this function may not be suitable to call in a situation where
- /// the underlying stream is an asynchronous I/O stream. To finish a stream
- /// the `try_finish` (or `shutdown`) method should be used instead. To
- /// re-acquire ownership of a stream it is safe to call this method after
- /// `try_finish` or `shutdown` has returned `Ok`.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn finish(mut self) -> io::Result<W> {
- self.inner.finish()?;
- Ok(self.inner.take_inner())
- }
-
- /// Consumes this encoder, flushing the output stream.
- ///
- /// This will flush the underlying data stream and then return the contained
- /// writer if the flush succeeded.
- /// The compressed stream will not closed but only flushed. This
- /// means that obtained byte array can by extended by another deflated
- /// stream. To close the stream add the two bytes 0x3 and 0x0.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn flush_finish(mut self) -> io::Result<W> {
- self.inner.flush()?;
- Ok(self.inner.take_inner())
- }
-
- /// Returns the number of bytes that have been written to this compressor.
- ///
- /// Note that not all bytes written to this object may be accounted for,
- /// there may still be some active buffering.
- pub fn total_in(&self) -> u64 {
- self.inner.data.total_in()
- }
-
- /// Returns the number of bytes that the compressor has produced.
- ///
- /// Note that not all bytes may have been written yet, some may still be
- /// buffered.
- pub fn total_out(&self) -> u64 {
- self.inner.data.total_out()
- }
-}
-
-impl<W: Write> Write for DeflateEncoder<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.inner.write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.inner.flush()
- }
-}
-
-impl<W: Read + Write> Read for DeflateEncoder<W> {
- fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
- self.inner.get_mut().read(buf)
- }
-}
-
-/// A DEFLATE decoder, or decompressor.
-///
-/// This structure implements a [`Write`] and will emit a stream of decompressed
-/// data when fed a stream of compressed data.
-///
-/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Read.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// # use flate2::Compression;
-/// # use flate2::write::DeflateEncoder;
-/// use flate2::write::DeflateDecoder;
-///
-/// # fn main() {
-/// # let mut e = DeflateEncoder::new(Vec::new(), Compression::default());
-/// # e.write_all(b"Hello World").unwrap();
-/// # let bytes = e.finish().unwrap();
-/// # println!("{}", decode_writer(bytes).unwrap());
-/// # }
-/// // Uncompresses a Deflate Encoded vector of bytes and returns a string or error
-/// // Here Vec<u8> implements Write
-/// fn decode_writer(bytes: Vec<u8>) -> io::Result<String> {
-/// let mut writer = Vec::new();
-/// let mut deflater = DeflateDecoder::new(writer);
-/// deflater.write_all(&bytes[..])?;
-/// writer = deflater.finish()?;
-/// let return_string = String::from_utf8(writer).expect("String parsing error");
-/// Ok(return_string)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct DeflateDecoder<W: Write> {
- inner: zio::Writer<W, Decompress>,
-}
-
-impl<W: Write> DeflateDecoder<W> {
- /// Creates a new decoder which will write uncompressed data to the stream.
- ///
- /// When this encoder is dropped or unwrapped the final pieces of data will
- /// be flushed.
- pub fn new(w: W) -> DeflateDecoder<W> {
- DeflateDecoder {
- inner: zio::Writer::new(w, Decompress::new(false)),
- }
- }
-
- /// Acquires a reference to the underlying writer.
- pub fn get_ref(&self) -> &W {
- self.inner.get_ref()
- }
-
- /// Acquires a mutable reference to the underlying writer.
- ///
- /// Note that mutating the output/input state of the stream may corrupt this
- /// object, so care must be taken when using this method.
- pub fn get_mut(&mut self) -> &mut W {
- self.inner.get_mut()
- }
-
- /// Resets the state of this decoder entirely, swapping out the output
- /// stream for another.
- ///
- /// This function will finish encoding the current stream into the current
- /// output stream before swapping out the two output streams.
- ///
- /// This will then reset the internal state of this decoder and replace the
- /// output stream with the one provided, returning the previous output
- /// stream. Future data written to this decoder will be decompressed into
- /// the output stream `w`.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to finish the stream, and if that I/O
- /// returns an error then that will be returned from this function.
- pub fn reset(&mut self, w: W) -> io::Result<W> {
- self.inner.finish()?;
- self.inner.data = Decompress::new(false);
- Ok(self.inner.replace(w))
- }
-
- /// Attempt to finish this output stream, writing out final chunks of data.
- ///
- /// Note that this function can only be used once data has finished being
- /// written to the output stream. After this function is called then further
- /// calls to `write` may result in a panic.
- ///
- /// # Panics
- ///
- /// Attempts to write data to this stream may result in a panic after this
- /// function is called.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to finish the stream, returning any
- /// errors which happen.
- pub fn try_finish(&mut self) -> io::Result<()> {
- self.inner.finish()
- }
-
- /// Consumes this encoder, flushing the output stream.
- ///
- /// This will flush the underlying data stream and then return the contained
- /// writer if the flush succeeded.
- ///
- /// Note that this function may not be suitable to call in a situation where
- /// the underlying stream is an asynchronous I/O stream. To finish a stream
- /// the `try_finish` (or `shutdown`) method should be used instead. To
- /// re-acquire ownership of a stream it is safe to call this method after
- /// `try_finish` or `shutdown` has returned `Ok`.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn finish(mut self) -> io::Result<W> {
- self.inner.finish()?;
- Ok(self.inner.take_inner())
- }
-
- /// Returns the number of bytes that the decompressor has consumed for
- /// decompression.
- ///
- /// Note that this will likely be smaller than the number of bytes
- /// successfully written to this stream due to internal buffering.
- pub fn total_in(&self) -> u64 {
- self.inner.data.total_in()
- }
-
- /// Returns the number of bytes that the decompressor has written to its
- /// output stream.
- pub fn total_out(&self) -> u64 {
- self.inner.data.total_out()
- }
-}
-
-impl<W: Write> Write for DeflateDecoder<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.inner.write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.inner.flush()
- }
-}
-
-impl<W: Read + Write> Read for DeflateDecoder<W> {
- fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
- self.inner.get_mut().read(buf)
- }
-}
diff --git a/vendor/flate2/src/ffi/c.rs b/vendor/flate2/src/ffi/c.rs
deleted file mode 100644
index 32864f8..0000000
--- a/vendor/flate2/src/ffi/c.rs
+++ /dev/null
@@ -1,433 +0,0 @@
-//! Implementation for C backends.
-use std::alloc::{self, Layout};
-use std::cmp;
-use std::convert::TryFrom;
-use std::fmt;
-use std::marker;
-use std::ops::{Deref, DerefMut};
-use std::os::raw::{c_int, c_uint, c_void};
-use std::ptr;
-
-use super::*;
-use crate::mem::{self, FlushDecompress, Status};
-
-#[derive(Default)]
-pub struct ErrorMessage(Option<&'static str>);
-
-impl ErrorMessage {
- pub fn get(&self) -> Option<&str> {
- self.0
- }
-}
-
-pub struct StreamWrapper {
- pub inner: Box<mz_stream>,
-}
-
-impl fmt::Debug for StreamWrapper {
- fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
- write!(f, "StreamWrapper")
- }
-}
-
-impl Default for StreamWrapper {
- fn default() -> StreamWrapper {
- StreamWrapper {
- inner: Box::new(mz_stream {
- next_in: ptr::null_mut(),
- avail_in: 0,
- total_in: 0,
- next_out: ptr::null_mut(),
- avail_out: 0,
- total_out: 0,
- msg: ptr::null_mut(),
- adler: 0,
- data_type: 0,
- reserved: 0,
- opaque: ptr::null_mut(),
- state: ptr::null_mut(),
- #[cfg(all(feature = "any_zlib", not(feature = "cloudflare-zlib-sys")))]
- zalloc,
- #[cfg(all(feature = "any_zlib", not(feature = "cloudflare-zlib-sys")))]
- zfree,
- #[cfg(not(all(feature = "any_zlib", not(feature = "cloudflare-zlib-sys"))))]
- zalloc: Some(zalloc),
- #[cfg(not(all(feature = "any_zlib", not(feature = "cloudflare-zlib-sys"))))]
- zfree: Some(zfree),
- }),
- }
- }
-}
-
-const ALIGN: usize = std::mem::align_of::<usize>();
-
-fn align_up(size: usize, align: usize) -> usize {
- (size + align - 1) & !(align - 1)
-}
-
-extern "C" fn zalloc(_ptr: *mut c_void, items: AllocSize, item_size: AllocSize) -> *mut c_void {
- // We need to multiply `items` and `item_size` to get the actual desired
- // allocation size. Since `zfree` doesn't receive a size argument we
- // also need to allocate space for a `usize` as a header so we can store
- // how large the allocation is to deallocate later.
- let size = match items
- .checked_mul(item_size)
- .and_then(|i| usize::try_from(i).ok())
- .map(|size| align_up(size, ALIGN))
- .and_then(|i| i.checked_add(std::mem::size_of::<usize>()))
- {
- Some(i) => i,
- None => return ptr::null_mut(),
- };
-
- // Make sure the `size` isn't too big to fail `Layout`'s restrictions
- let layout = match Layout::from_size_align(size, ALIGN) {
- Ok(layout) => layout,
- Err(_) => return ptr::null_mut(),
- };
-
- unsafe {
- // Allocate the data, and if successful store the size we allocated
- // at the beginning and then return an offset pointer.
- let ptr = alloc::alloc(layout) as *mut usize;
- if ptr.is_null() {
- return ptr as *mut c_void;
- }
- *ptr = size;
- ptr.add(1) as *mut c_void
- }
-}
-
-extern "C" fn zfree(_ptr: *mut c_void, address: *mut c_void) {
- unsafe {
- // Move our address being freed back one pointer, read the size we
- // stored in `zalloc`, and then free it using the standard Rust
- // allocator.
- let ptr = (address as *mut usize).offset(-1);
- let size = *ptr;
- let layout = Layout::from_size_align_unchecked(size, ALIGN);
- alloc::dealloc(ptr as *mut u8, layout)
- }
-}
-
-impl Deref for StreamWrapper {
- type Target = mz_stream;
-
- fn deref(&self) -> &Self::Target {
- &*self.inner
- }
-}
-
-impl DerefMut for StreamWrapper {
- fn deref_mut(&mut self) -> &mut Self::Target {
- &mut *self.inner
- }
-}
-
-unsafe impl<D: Direction> Send for Stream<D> {}
-unsafe impl<D: Direction> Sync for Stream<D> {}
-
-/// Trait used to call the right destroy/end function on the inner
-/// stream object on drop.
-pub trait Direction {
- unsafe fn destroy(stream: *mut mz_stream) -> c_int;
-}
-
-#[derive(Debug)]
-pub enum DirCompress {}
-#[derive(Debug)]
-pub enum DirDecompress {}
-
-#[derive(Debug)]
-pub struct Stream<D: Direction> {
- pub stream_wrapper: StreamWrapper,
- pub total_in: u64,
- pub total_out: u64,
- pub _marker: marker::PhantomData<D>,
-}
-
-impl<D: Direction> Stream<D> {
- pub fn msg(&self) -> ErrorMessage {
- let msg = self.stream_wrapper.msg;
- ErrorMessage(if msg.is_null() {
- None
- } else {
- let s = unsafe { std::ffi::CStr::from_ptr(msg) };
- std::str::from_utf8(s.to_bytes()).ok()
- })
- }
-}
-
-impl<D: Direction> Drop for Stream<D> {
- fn drop(&mut self) {
- unsafe {
- let _ = D::destroy(&mut *self.stream_wrapper);
- }
- }
-}
-
-impl Direction for DirCompress {
- unsafe fn destroy(stream: *mut mz_stream) -> c_int {
- mz_deflateEnd(stream)
- }
-}
-impl Direction for DirDecompress {
- unsafe fn destroy(stream: *mut mz_stream) -> c_int {
- mz_inflateEnd(stream)
- }
-}
-
-#[derive(Debug)]
-pub struct Inflate {
- pub inner: Stream<DirDecompress>,
-}
-
-impl InflateBackend for Inflate {
- fn make(zlib_header: bool, window_bits: u8) -> Self {
- unsafe {
- let mut state = StreamWrapper::default();
- let ret = mz_inflateInit2(
- &mut *state,
- if zlib_header {
- window_bits as c_int
- } else {
- -(window_bits as c_int)
- },
- );
- assert_eq!(ret, 0);
- Inflate {
- inner: Stream {
- stream_wrapper: state,
- total_in: 0,
- total_out: 0,
- _marker: marker::PhantomData,
- },
- }
- }
- }
-
- fn decompress(
- &mut self,
- input: &[u8],
- output: &mut [u8],
- flush: FlushDecompress,
- ) -> Result<Status, DecompressError> {
- let raw = &mut *self.inner.stream_wrapper;
- raw.msg = ptr::null_mut();
- raw.next_in = input.as_ptr() as *mut u8;
- raw.avail_in = cmp::min(input.len(), c_uint::MAX as usize) as c_uint;
- raw.next_out = output.as_mut_ptr();
- raw.avail_out = cmp::min(output.len(), c_uint::MAX as usize) as c_uint;
-
- let rc = unsafe { mz_inflate(raw, flush as c_int) };
-
- // Unfortunately the total counters provided by zlib might be only
- // 32 bits wide and overflow while processing large amounts of data.
- self.inner.total_in += (raw.next_in as usize - input.as_ptr() as usize) as u64;
- self.inner.total_out += (raw.next_out as usize - output.as_ptr() as usize) as u64;
-
- // reset these pointers so we don't accidentally read them later
- raw.next_in = ptr::null_mut();
- raw.avail_in = 0;
- raw.next_out = ptr::null_mut();
- raw.avail_out = 0;
-
- match rc {
- MZ_DATA_ERROR | MZ_STREAM_ERROR => mem::decompress_failed(self.inner.msg()),
- MZ_OK => Ok(Status::Ok),
- MZ_BUF_ERROR => Ok(Status::BufError),
- MZ_STREAM_END => Ok(Status::StreamEnd),
- MZ_NEED_DICT => mem::decompress_need_dict(raw.adler as u32),
- c => panic!("unknown return code: {}", c),
- }
- }
-
- fn reset(&mut self, zlib_header: bool) {
- let bits = if zlib_header {
- MZ_DEFAULT_WINDOW_BITS
- } else {
- -MZ_DEFAULT_WINDOW_BITS
- };
- unsafe {
- inflateReset2(&mut *self.inner.stream_wrapper, bits);
- }
- self.inner.total_out = 0;
- self.inner.total_in = 0;
- }
-}
-
-impl Backend for Inflate {
- #[inline]
- fn total_in(&self) -> u64 {
- self.inner.total_in
- }
-
- #[inline]
- fn total_out(&self) -> u64 {
- self.inner.total_out
- }
-}
-
-#[derive(Debug)]
-pub struct Deflate {
- pub inner: Stream<DirCompress>,
-}
-
-impl DeflateBackend for Deflate {
- fn make(level: Compression, zlib_header: bool, window_bits: u8) -> Self {
- unsafe {
- let mut state = StreamWrapper::default();
- let ret = mz_deflateInit2(
- &mut *state,
- level.0 as c_int,
- MZ_DEFLATED,
- if zlib_header {
- window_bits as c_int
- } else {
- -(window_bits as c_int)
- },
- 8,
- MZ_DEFAULT_STRATEGY,
- );
- assert_eq!(ret, 0);
- Deflate {
- inner: Stream {
- stream_wrapper: state,
- total_in: 0,
- total_out: 0,
- _marker: marker::PhantomData,
- },
- }
- }
- }
- fn compress(
- &mut self,
- input: &[u8],
- output: &mut [u8],
- flush: FlushCompress,
- ) -> Result<Status, CompressError> {
- let raw = &mut *self.inner.stream_wrapper;
- raw.msg = ptr::null_mut();
- raw.next_in = input.as_ptr() as *mut _;
- raw.avail_in = cmp::min(input.len(), c_uint::MAX as usize) as c_uint;
- raw.next_out = output.as_mut_ptr();
- raw.avail_out = cmp::min(output.len(), c_uint::MAX as usize) as c_uint;
-
- let rc = unsafe { mz_deflate(raw, flush as c_int) };
-
- // Unfortunately the total counters provided by zlib might be only
- // 32 bits wide and overflow while processing large amounts of data.
- self.inner.total_in += (raw.next_in as usize - input.as_ptr() as usize) as u64;
- self.inner.total_out += (raw.next_out as usize - output.as_ptr() as usize) as u64;
-
- // reset these pointers so we don't accidentally read them later
- raw.next_in = ptr::null_mut();
- raw.avail_in = 0;
- raw.next_out = ptr::null_mut();
- raw.avail_out = 0;
-
- match rc {
- MZ_OK => Ok(Status::Ok),
- MZ_BUF_ERROR => Ok(Status::BufError),
- MZ_STREAM_END => Ok(Status::StreamEnd),
- MZ_STREAM_ERROR => mem::compress_failed(self.inner.msg()),
- c => panic!("unknown return code: {}", c),
- }
- }
-
- fn reset(&mut self) {
- self.inner.total_in = 0;
- self.inner.total_out = 0;
- let rc = unsafe { mz_deflateReset(&mut *self.inner.stream_wrapper) };
- assert_eq!(rc, MZ_OK);
- }
-}
-
-impl Backend for Deflate {
- #[inline]
- fn total_in(&self) -> u64 {
- self.inner.total_in
- }
-
- #[inline]
- fn total_out(&self) -> u64 {
- self.inner.total_out
- }
-}
-
-pub use self::c_backend::*;
-
-/// For backwards compatibility, we provide symbols as `mz_` to mimic the miniz API
-#[allow(bad_style)]
-mod c_backend {
- use std::mem;
- use std::os::raw::{c_char, c_int};
-
- #[cfg(feature = "zlib-ng")]
- use libz_ng_sys as libz;
-
- #[cfg(all(not(feature = "zlib-ng"), feature = "cloudflare_zlib"))]
- use cloudflare_zlib_sys as libz;
-
- #[cfg(all(not(feature = "cloudflare_zlib"), not(feature = "zlib-ng")))]
- use libz_sys as libz;
-
- pub use libz::deflate as mz_deflate;
- pub use libz::deflateEnd as mz_deflateEnd;
- pub use libz::deflateReset as mz_deflateReset;
- pub use libz::inflate as mz_inflate;
- pub use libz::inflateEnd as mz_inflateEnd;
- pub use libz::z_stream as mz_stream;
- pub use libz::*;
-
- pub use libz::Z_BLOCK as MZ_BLOCK;
- pub use libz::Z_BUF_ERROR as MZ_BUF_ERROR;
- pub use libz::Z_DATA_ERROR as MZ_DATA_ERROR;
- pub use libz::Z_DEFAULT_STRATEGY as MZ_DEFAULT_STRATEGY;
- pub use libz::Z_DEFLATED as MZ_DEFLATED;
- pub use libz::Z_FINISH as MZ_FINISH;
- pub use libz::Z_FULL_FLUSH as MZ_FULL_FLUSH;
- pub use libz::Z_NEED_DICT as MZ_NEED_DICT;
- pub use libz::Z_NO_FLUSH as MZ_NO_FLUSH;
- pub use libz::Z_OK as MZ_OK;
- pub use libz::Z_PARTIAL_FLUSH as MZ_PARTIAL_FLUSH;
- pub use libz::Z_STREAM_END as MZ_STREAM_END;
- pub use libz::Z_STREAM_ERROR as MZ_STREAM_ERROR;
- pub use libz::Z_SYNC_FLUSH as MZ_SYNC_FLUSH;
- pub type AllocSize = libz::uInt;
-
- pub const MZ_DEFAULT_WINDOW_BITS: c_int = 15;
-
- #[cfg(feature = "zlib-ng")]
- const ZLIB_VERSION: &'static str = "2.1.0.devel\0";
- #[cfg(not(feature = "zlib-ng"))]
- const ZLIB_VERSION: &'static str = "1.2.8\0";
-
- pub unsafe extern "C" fn mz_deflateInit2(
- stream: *mut mz_stream,
- level: c_int,
- method: c_int,
- window_bits: c_int,
- mem_level: c_int,
- strategy: c_int,
- ) -> c_int {
- libz::deflateInit2_(
- stream,
- level,
- method,
- window_bits,
- mem_level,
- strategy,
- ZLIB_VERSION.as_ptr() as *const c_char,
- mem::size_of::<mz_stream>() as c_int,
- )
- }
- pub unsafe extern "C" fn mz_inflateInit2(stream: *mut mz_stream, window_bits: c_int) -> c_int {
- libz::inflateInit2_(
- stream,
- window_bits,
- ZLIB_VERSION.as_ptr() as *const c_char,
- mem::size_of::<mz_stream>() as c_int,
- )
- }
-}
diff --git a/vendor/flate2/src/ffi/mod.rs b/vendor/flate2/src/ffi/mod.rs
deleted file mode 100644
index 20b3cae..0000000
--- a/vendor/flate2/src/ffi/mod.rs
+++ /dev/null
@@ -1,52 +0,0 @@
-//! This module contains backend-specific code.
-
-use crate::mem::{CompressError, DecompressError, FlushCompress, FlushDecompress, Status};
-use crate::Compression;
-
-/// Traits specifying the interface of the backends.
-///
-/// Sync + Send are added as a condition to ensure they are available
-/// for the frontend.
-pub trait Backend: Sync + Send {
- fn total_in(&self) -> u64;
- fn total_out(&self) -> u64;
-}
-
-pub trait InflateBackend: Backend {
- fn make(zlib_header: bool, window_bits: u8) -> Self;
- fn decompress(
- &mut self,
- input: &[u8],
- output: &mut [u8],
- flush: FlushDecompress,
- ) -> Result<Status, DecompressError>;
- fn reset(&mut self, zlib_header: bool);
-}
-
-pub trait DeflateBackend: Backend {
- fn make(level: Compression, zlib_header: bool, window_bits: u8) -> Self;
- fn compress(
- &mut self,
- input: &[u8],
- output: &mut [u8],
- flush: FlushCompress,
- ) -> Result<Status, CompressError>;
- fn reset(&mut self);
-}
-
-// Default to Rust implementation unless explicitly opted in to a different backend.
-#[cfg(feature = "any_zlib")]
-mod c;
-#[cfg(feature = "any_zlib")]
-pub use self::c::*;
-
-#[cfg(all(not(feature = "any_zlib"), feature = "miniz_oxide"))]
-mod rust;
-#[cfg(all(not(feature = "any_zlib"), feature = "miniz_oxide"))]
-pub use self::rust::*;
-
-impl std::fmt::Debug for ErrorMessage {
- fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
- self.get().fmt(f)
- }
-}
diff --git a/vendor/flate2/src/ffi/rust.rs b/vendor/flate2/src/ffi/rust.rs
deleted file mode 100644
index bed6629..0000000
--- a/vendor/flate2/src/ffi/rust.rs
+++ /dev/null
@@ -1,183 +0,0 @@
-//! Implementation for `miniz_oxide` rust backend.
-
-use std::convert::TryInto;
-use std::fmt;
-
-use miniz_oxide::deflate::core::CompressorOxide;
-use miniz_oxide::inflate::stream::InflateState;
-pub use miniz_oxide::*;
-
-pub const MZ_NO_FLUSH: isize = MZFlush::None as isize;
-pub const MZ_PARTIAL_FLUSH: isize = MZFlush::Partial as isize;
-pub const MZ_SYNC_FLUSH: isize = MZFlush::Sync as isize;
-pub const MZ_FULL_FLUSH: isize = MZFlush::Full as isize;
-pub const MZ_FINISH: isize = MZFlush::Finish as isize;
-
-use super::*;
-use crate::mem;
-
-// miniz_oxide doesn't provide any error messages (yet?)
-#[derive(Default)]
-pub struct ErrorMessage;
-
-impl ErrorMessage {
- pub fn get(&self) -> Option<&str> {
- None
- }
-}
-
-fn format_from_bool(zlib_header: bool) -> DataFormat {
- if zlib_header {
- DataFormat::Zlib
- } else {
- DataFormat::Raw
- }
-}
-
-pub struct Inflate {
- inner: Box<InflateState>,
- total_in: u64,
- total_out: u64,
-}
-
-impl fmt::Debug for Inflate {
- fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
- write!(
- f,
- "miniz_oxide inflate internal state. total_in: {}, total_out: {}",
- self.total_in, self.total_out,
- )
- }
-}
-
-impl InflateBackend for Inflate {
- fn make(zlib_header: bool, _window_bits: u8) -> Self {
- let format = format_from_bool(zlib_header);
-
- Inflate {
- inner: InflateState::new_boxed(format),
- total_in: 0,
- total_out: 0,
- }
- }
-
- fn decompress(
- &mut self,
- input: &[u8],
- output: &mut [u8],
- flush: FlushDecompress,
- ) -> Result<Status, DecompressError> {
- let flush = MZFlush::new(flush as i32).unwrap();
-
- let res = inflate::stream::inflate(&mut self.inner, input, output, flush);
- self.total_in += res.bytes_consumed as u64;
- self.total_out += res.bytes_written as u64;
-
- match res.status {
- Ok(status) => match status {
- MZStatus::Ok => Ok(Status::Ok),
- MZStatus::StreamEnd => Ok(Status::StreamEnd),
- MZStatus::NeedDict => {
- mem::decompress_need_dict(self.inner.decompressor().adler32().unwrap_or(0))
- }
- },
- Err(status) => match status {
- MZError::Buf => Ok(Status::BufError),
- _ => mem::decompress_failed(ErrorMessage),
- },
- }
- }
-
- fn reset(&mut self, zlib_header: bool) {
- self.inner.reset(format_from_bool(zlib_header));
- self.total_in = 0;
- self.total_out = 0;
- }
-}
-
-impl Backend for Inflate {
- #[inline]
- fn total_in(&self) -> u64 {
- self.total_in
- }
-
- #[inline]
- fn total_out(&self) -> u64 {
- self.total_out
- }
-}
-
-pub struct Deflate {
- inner: Box<CompressorOxide>,
- total_in: u64,
- total_out: u64,
-}
-
-impl fmt::Debug for Deflate {
- fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
- write!(
- f,
- "miniz_oxide deflate internal state. total_in: {}, total_out: {}",
- self.total_in, self.total_out,
- )
- }
-}
-
-impl DeflateBackend for Deflate {
- fn make(level: Compression, zlib_header: bool, _window_bits: u8) -> Self {
- // Check in case the integer value changes at some point.
- debug_assert!(level.level() <= 10);
-
- let mut inner: Box<CompressorOxide> = Box::default();
- let format = format_from_bool(zlib_header);
- inner.set_format_and_level(format, level.level().try_into().unwrap_or(1));
-
- Deflate {
- inner,
- total_in: 0,
- total_out: 0,
- }
- }
-
- fn compress(
- &mut self,
- input: &[u8],
- output: &mut [u8],
- flush: FlushCompress,
- ) -> Result<Status, CompressError> {
- let flush = MZFlush::new(flush as i32).unwrap();
- let res = deflate::stream::deflate(&mut self.inner, input, output, flush);
- self.total_in += res.bytes_consumed as u64;
- self.total_out += res.bytes_written as u64;
-
- match res.status {
- Ok(status) => match status {
- MZStatus::Ok => Ok(Status::Ok),
- MZStatus::StreamEnd => Ok(Status::StreamEnd),
- MZStatus::NeedDict => mem::compress_failed(ErrorMessage),
- },
- Err(status) => match status {
- MZError::Buf => Ok(Status::BufError),
- _ => mem::compress_failed(ErrorMessage),
- },
- }
- }
-
- fn reset(&mut self) {
- self.total_in = 0;
- self.total_out = 0;
- self.inner.reset();
- }
-}
-
-impl Backend for Deflate {
- #[inline]
- fn total_in(&self) -> u64 {
- self.total_in
- }
-
- #[inline]
- fn total_out(&self) -> u64 {
- self.total_out
- }
-}
diff --git a/vendor/flate2/src/gz/bufread.rs b/vendor/flate2/src/gz/bufread.rs
deleted file mode 100644
index 679b4a7..0000000
--- a/vendor/flate2/src/gz/bufread.rs
+++ /dev/null
@@ -1,483 +0,0 @@
-use std::cmp;
-use std::io;
-use std::io::prelude::*;
-use std::mem;
-
-use super::{corrupt, read_into, GzBuilder, GzHeader, GzHeaderParser};
-use crate::crc::CrcReader;
-use crate::deflate;
-use crate::Compression;
-
-fn copy(into: &mut [u8], from: &[u8], pos: &mut usize) -> usize {
- let min = cmp::min(into.len(), from.len() - *pos);
- for (slot, val) in into.iter_mut().zip(from[*pos..*pos + min].iter()) {
- *slot = *val;
- }
- *pos += min;
- min
-}
-
-/// A gzip streaming encoder
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// uncompressed data from the underlying [`BufRead`] and provides the compressed data.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// use flate2::Compression;
-/// use flate2::bufread::GzEncoder;
-/// use std::fs::File;
-/// use std::io::BufReader;
-///
-/// // Opens sample file, compresses the contents and returns a Vector or error
-/// // File wrapped in a BufReader implements BufRead
-///
-/// fn open_hello_world() -> io::Result<Vec<u8>> {
-/// let f = File::open("examples/hello_world.txt")?;
-/// let b = BufReader::new(f);
-/// let mut gz = GzEncoder::new(b, Compression::fast());
-/// let mut buffer = Vec::new();
-/// gz.read_to_end(&mut buffer)?;
-/// Ok(buffer)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct GzEncoder<R> {
- inner: deflate::bufread::DeflateEncoder<CrcReader<R>>,
- header: Vec<u8>,
- pos: usize,
- eof: bool,
-}
-
-pub fn gz_encoder<R: BufRead>(header: Vec<u8>, r: R, lvl: Compression) -> GzEncoder<R> {
- let crc = CrcReader::new(r);
- GzEncoder {
- inner: deflate::bufread::DeflateEncoder::new(crc, lvl),
- header,
- pos: 0,
- eof: false,
- }
-}
-
-impl<R: BufRead> GzEncoder<R> {
- /// Creates a new encoder which will use the given compression level.
- ///
- /// The encoder is not configured specially for the emitted header. For
- /// header configuration, see the `GzBuilder` type.
- ///
- /// The data read from the stream `r` will be compressed and available
- /// through the returned reader.
- pub fn new(r: R, level: Compression) -> GzEncoder<R> {
- GzBuilder::new().buf_read(r, level)
- }
-
- fn read_footer(&mut self, into: &mut [u8]) -> io::Result<usize> {
- if self.pos == 8 {
- return Ok(0);
- }
- let crc = self.inner.get_ref().crc();
- let ref arr = [
- (crc.sum() >> 0) as u8,
- (crc.sum() >> 8) as u8,
- (crc.sum() >> 16) as u8,
- (crc.sum() >> 24) as u8,
- (crc.amount() >> 0) as u8,
- (crc.amount() >> 8) as u8,
- (crc.amount() >> 16) as u8,
- (crc.amount() >> 24) as u8,
- ];
- Ok(copy(into, arr, &mut self.pos))
- }
-}
-
-impl<R> GzEncoder<R> {
- /// Acquires a reference to the underlying reader.
- pub fn get_ref(&self) -> &R {
- self.inner.get_ref().get_ref()
- }
-
- /// Acquires a mutable reference to the underlying reader.
- ///
- /// Note that mutation of the reader may result in surprising results if
- /// this encoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- self.inner.get_mut().get_mut()
- }
-
- /// Returns the underlying stream, consuming this encoder
- pub fn into_inner(self) -> R {
- self.inner.into_inner().into_inner()
- }
-}
-
-#[inline]
-fn finish(buf: &[u8; 8]) -> (u32, u32) {
- let crc = ((buf[0] as u32) << 0)
- | ((buf[1] as u32) << 8)
- | ((buf[2] as u32) << 16)
- | ((buf[3] as u32) << 24);
- let amt = ((buf[4] as u32) << 0)
- | ((buf[5] as u32) << 8)
- | ((buf[6] as u32) << 16)
- | ((buf[7] as u32) << 24);
- (crc, amt)
-}
-
-impl<R: BufRead> Read for GzEncoder<R> {
- fn read(&mut self, mut into: &mut [u8]) -> io::Result<usize> {
- let mut amt = 0;
- if self.eof {
- return self.read_footer(into);
- } else if self.pos < self.header.len() {
- amt += copy(into, &self.header, &mut self.pos);
- if amt == into.len() {
- return Ok(amt);
- }
- let tmp = into;
- into = &mut tmp[amt..];
- }
- match self.inner.read(into)? {
- 0 => {
- self.eof = true;
- self.pos = 0;
- self.read_footer(into)
- }
- n => Ok(amt + n),
- }
- }
-}
-
-impl<R: BufRead + Write> Write for GzEncoder<R> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
-
-/// A decoder for a single member of a [gzip file].
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// compressed data from the underlying [`BufRead`] and provides the uncompressed data.
-///
-/// After reading a single member of the gzip data this reader will return
-/// Ok(0) even if there are more bytes available in the underlying reader.
-/// If you need the following bytes, call `into_inner()` after Ok(0) to
-/// recover the underlying reader.
-///
-/// To handle gzip files that may have multiple members, see [`MultiGzDecoder`]
-/// or read more
-/// [in the introduction](../index.html#about-multi-member-gzip-files).
-///
-/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// # use flate2::Compression;
-/// # use flate2::write::GzEncoder;
-/// use flate2::bufread::GzDecoder;
-///
-/// # fn main() {
-/// # let mut e = GzEncoder::new(Vec::new(), Compression::default());
-/// # e.write_all(b"Hello World").unwrap();
-/// # let bytes = e.finish().unwrap();
-/// # println!("{}", decode_reader(bytes).unwrap());
-/// # }
-/// #
-/// // Uncompresses a Gz Encoded vector of bytes and returns a string or error
-/// // Here &[u8] implements BufRead
-///
-/// fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
-/// let mut gz = GzDecoder::new(&bytes[..]);
-/// let mut s = String::new();
-/// gz.read_to_string(&mut s)?;
-/// Ok(s)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct GzDecoder<R> {
- state: GzState,
- reader: CrcReader<deflate::bufread::DeflateDecoder<R>>,
- multi: bool,
-}
-
-#[derive(Debug)]
-enum GzState {
- Header(GzHeaderParser),
- Body(GzHeader),
- Finished(GzHeader, usize, [u8; 8]),
- Err(io::Error),
- End(Option<GzHeader>),
-}
-
-impl<R: BufRead> GzDecoder<R> {
- /// Creates a new decoder from the given reader, immediately parsing the
- /// gzip header.
- pub fn new(mut r: R) -> GzDecoder<R> {
- let mut header_parser = GzHeaderParser::new();
-
- let state = match header_parser.parse(&mut r) {
- Ok(_) => GzState::Body(GzHeader::from(header_parser)),
- Err(ref err) if io::ErrorKind::WouldBlock == err.kind() => {
- GzState::Header(header_parser)
- }
- Err(err) => GzState::Err(err),
- };
-
- GzDecoder {
- state,
- reader: CrcReader::new(deflate::bufread::DeflateDecoder::new(r)),
- multi: false,
- }
- }
-
- fn multi(mut self, flag: bool) -> GzDecoder<R> {
- self.multi = flag;
- self
- }
-}
-
-impl<R> GzDecoder<R> {
- /// Returns the header associated with this stream, if it was valid
- pub fn header(&self) -> Option<&GzHeader> {
- match &self.state {
- GzState::Body(header) | GzState::Finished(header, _, _) => Some(header),
- GzState::End(header) => header.as_ref(),
- _ => None,
- }
- }
-
- /// Acquires a reference to the underlying reader.
- pub fn get_ref(&self) -> &R {
- self.reader.get_ref().get_ref()
- }
-
- /// Acquires a mutable reference to the underlying stream.
- ///
- /// Note that mutation of the stream may result in surprising results if
- /// this decoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- self.reader.get_mut().get_mut()
- }
-
- /// Consumes this decoder, returning the underlying reader.
- pub fn into_inner(self) -> R {
- self.reader.into_inner().into_inner()
- }
-}
-
-impl<R: BufRead> Read for GzDecoder<R> {
- fn read(&mut self, into: &mut [u8]) -> io::Result<usize> {
- loop {
- match &mut self.state {
- GzState::Header(parser) => {
- parser.parse(self.reader.get_mut().get_mut())?;
- self.state = GzState::Body(GzHeader::from(mem::take(parser)));
- }
- GzState::Body(header) => {
- if into.is_empty() {
- return Ok(0);
- }
- match self.reader.read(into)? {
- 0 => {
- self.state = GzState::Finished(mem::take(header), 0, [0; 8]);
- }
- n => {
- return Ok(n);
- }
- }
- }
- GzState::Finished(header, pos, buf) => {
- if *pos < buf.len() {
- *pos += read_into(self.reader.get_mut().get_mut(), &mut buf[*pos..])?;
- } else {
- let (crc, amt) = finish(&buf);
-
- if crc != self.reader.crc().sum() || amt != self.reader.crc().amount() {
- self.state = GzState::End(Some(mem::take(header)));
- return Err(corrupt());
- } else if self.multi {
- let is_eof = self
- .reader
- .get_mut()
- .get_mut()
- .fill_buf()
- .map(|buf| buf.is_empty())?;
-
- if is_eof {
- self.state = GzState::End(Some(mem::take(header)));
- } else {
- self.reader.reset();
- self.reader.get_mut().reset_data();
- self.state = GzState::Header(GzHeaderParser::new())
- }
- } else {
- self.state = GzState::End(Some(mem::take(header)));
- }
- }
- }
- GzState::Err(err) => {
- let result = Err(mem::replace(err, io::ErrorKind::Other.into()));
- self.state = GzState::End(None);
- return result;
- }
- GzState::End(_) => return Ok(0),
- }
- }
- }
-}
-
-impl<R: BufRead + Write> Write for GzDecoder<R> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
-
-/// A gzip streaming decoder that decodes a [gzip file] that may have multiple members.
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// compressed data from the underlying [`BufRead`] and provides the uncompressed data.
-///
-/// A gzip file consists of a series of *members* concatenated one after another.
-/// MultiGzDecoder decodes all members from the data and only returns Ok(0) when the
-/// underlying reader does. For a file, this reads to the end of the file.
-///
-/// To handle members seperately, see [GzDecoder] or read more
-/// [in the introduction](../index.html#about-multi-member-gzip-files).
-///
-/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// # use flate2::Compression;
-/// # use flate2::write::GzEncoder;
-/// use flate2::bufread::MultiGzDecoder;
-///
-/// # fn main() {
-/// # let mut e = GzEncoder::new(Vec::new(), Compression::default());
-/// # e.write_all(b"Hello World").unwrap();
-/// # let bytes = e.finish().unwrap();
-/// # println!("{}", decode_reader(bytes).unwrap());
-/// # }
-/// #
-/// // Uncompresses a Gz Encoded vector of bytes and returns a string or error
-/// // Here &[u8] implements BufRead
-///
-/// fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
-/// let mut gz = MultiGzDecoder::new(&bytes[..]);
-/// let mut s = String::new();
-/// gz.read_to_string(&mut s)?;
-/// Ok(s)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct MultiGzDecoder<R>(GzDecoder<R>);
-
-impl<R: BufRead> MultiGzDecoder<R> {
- /// Creates a new decoder from the given reader, immediately parsing the
- /// (first) gzip header. If the gzip stream contains multiple members all will
- /// be decoded.
- pub fn new(r: R) -> MultiGzDecoder<R> {
- MultiGzDecoder(GzDecoder::new(r).multi(true))
- }
-}
-
-impl<R> MultiGzDecoder<R> {
- /// Returns the current header associated with this stream, if it's valid
- pub fn header(&self) -> Option<&GzHeader> {
- self.0.header()
- }
-
- /// Acquires a reference to the underlying reader.
- pub fn get_ref(&self) -> &R {
- self.0.get_ref()
- }
-
- /// Acquires a mutable reference to the underlying stream.
- ///
- /// Note that mutation of the stream may result in surprising results if
- /// this decoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- self.0.get_mut()
- }
-
- /// Consumes this decoder, returning the underlying reader.
- pub fn into_inner(self) -> R {
- self.0.into_inner()
- }
-}
-
-impl<R: BufRead> Read for MultiGzDecoder<R> {
- fn read(&mut self, into: &mut [u8]) -> io::Result<usize> {
- self.0.read(into)
- }
-}
-
-#[cfg(test)]
-mod test {
- use crate::bufread::GzDecoder;
- use crate::gz::write;
- use crate::Compression;
- use std::io::{Read, Write};
-
- // GzDecoder consumes one gzip member and then returns 0 for subsequent reads, allowing any
- // additional data to be consumed by the caller.
- #[test]
- fn decode_extra_data() {
- let expected = "Hello World";
-
- let compressed = {
- let mut e = write::GzEncoder::new(Vec::new(), Compression::default());
- e.write(expected.as_ref()).unwrap();
- let mut b = e.finish().unwrap();
- b.push(b'x');
- b
- };
-
- let mut output = Vec::new();
- let mut decoder = GzDecoder::new(compressed.as_slice());
- let decoded_bytes = decoder.read_to_end(&mut output).unwrap();
- assert_eq!(decoded_bytes, output.len());
- let actual = std::str::from_utf8(&output).expect("String parsing error");
- assert_eq!(
- actual, expected,
- "after decompression we obtain the original input"
- );
-
- output.clear();
- assert_eq!(
- decoder.read(&mut output).unwrap(),
- 0,
- "subsequent read of decoder returns 0, but inner reader can return additional data"
- );
- let mut reader = decoder.into_inner();
- assert_eq!(
- reader.read_to_end(&mut output).unwrap(),
- 1,
- "extra data is accessible in underlying buf-read"
- );
- assert_eq!(output, b"x");
- }
-}
diff --git a/vendor/flate2/src/gz/mod.rs b/vendor/flate2/src/gz/mod.rs
deleted file mode 100644
index 31a6961..0000000
--- a/vendor/flate2/src/gz/mod.rs
+++ /dev/null
@@ -1,644 +0,0 @@
-use std::ffi::CString;
-use std::io::{BufRead, Error, ErrorKind, Read, Result, Write};
-use std::time;
-
-use crate::bufreader::BufReader;
-use crate::{Compression, Crc};
-
-pub static FHCRC: u8 = 1 << 1;
-pub static FEXTRA: u8 = 1 << 2;
-pub static FNAME: u8 = 1 << 3;
-pub static FCOMMENT: u8 = 1 << 4;
-pub static FRESERVED: u8 = 1 << 5 | 1 << 6 | 1 << 7;
-
-pub mod bufread;
-pub mod read;
-pub mod write;
-
-// The maximum length of the header filename and comment fields. More than
-// enough for these fields in reasonable use, but prevents possible attacks.
-const MAX_HEADER_BUF: usize = 65535;
-
-/// A structure representing the header of a gzip stream.
-///
-/// The header can contain metadata about the file that was compressed, if
-/// present.
-#[derive(PartialEq, Clone, Debug, Default)]
-pub struct GzHeader {
- extra: Option<Vec<u8>>,
- filename: Option<Vec<u8>>,
- comment: Option<Vec<u8>>,
- operating_system: u8,
- mtime: u32,
-}
-
-impl GzHeader {
- /// Returns the `filename` field of this gzip stream's header, if present.
- pub fn filename(&self) -> Option<&[u8]> {
- self.filename.as_ref().map(|s| &s[..])
- }
-
- /// Returns the `extra` field of this gzip stream's header, if present.
- pub fn extra(&self) -> Option<&[u8]> {
- self.extra.as_ref().map(|s| &s[..])
- }
-
- /// Returns the `comment` field of this gzip stream's header, if present.
- pub fn comment(&self) -> Option<&[u8]> {
- self.comment.as_ref().map(|s| &s[..])
- }
-
- /// Returns the `operating_system` field of this gzip stream's header.
- ///
- /// There are predefined values for various operating systems.
- /// 255 means that the value is unknown.
- pub fn operating_system(&self) -> u8 {
- self.operating_system
- }
-
- /// This gives the most recent modification time of the original file being compressed.
- ///
- /// The time is in Unix format, i.e., seconds since 00:00:00 GMT, Jan. 1, 1970.
- /// (Note that this may cause problems for MS-DOS and other systems that use local
- /// rather than Universal time.) If the compressed data did not come from a file,
- /// `mtime` is set to the time at which compression started.
- /// `mtime` = 0 means no time stamp is available.
- ///
- /// The usage of `mtime` is discouraged because of Year 2038 problem.
- pub fn mtime(&self) -> u32 {
- self.mtime
- }
-
- /// Returns the most recent modification time represented by a date-time type.
- /// Returns `None` if the value of the underlying counter is 0,
- /// indicating no time stamp is available.
- ///
- ///
- /// The time is measured as seconds since 00:00:00 GMT, Jan. 1 1970.
- /// See [`mtime`](#method.mtime) for more detail.
- pub fn mtime_as_datetime(&self) -> Option<time::SystemTime> {
- if self.mtime == 0 {
- None
- } else {
- let duration = time::Duration::new(u64::from(self.mtime), 0);
- let datetime = time::UNIX_EPOCH + duration;
- Some(datetime)
- }
- }
-}
-
-#[derive(Debug)]
-pub enum GzHeaderState {
- Start(u8, [u8; 10]),
- Xlen(Option<Box<Crc>>, u8, [u8; 2]),
- Extra(Option<Box<Crc>>, u16),
- Filename(Option<Box<Crc>>),
- Comment(Option<Box<Crc>>),
- Crc(Option<Box<Crc>>, u8, [u8; 2]),
- Complete,
-}
-
-impl Default for GzHeaderState {
- fn default() -> Self {
- Self::Complete
- }
-}
-
-#[derive(Debug, Default)]
-pub struct GzHeaderParser {
- state: GzHeaderState,
- flags: u8,
- header: GzHeader,
-}
-
-impl GzHeaderParser {
- fn new() -> Self {
- GzHeaderParser {
- state: GzHeaderState::Start(0, [0; 10]),
- flags: 0,
- header: GzHeader::default(),
- }
- }
-
- fn parse<'a, R: Read>(&mut self, r: &'a mut R) -> Result<()> {
- loop {
- match &mut self.state {
- GzHeaderState::Start(count, buffer) => {
- while (*count as usize) < buffer.len() {
- *count += read_into(r, &mut buffer[*count as usize..])? as u8;
- }
- // Gzip identification bytes
- if buffer[0] != 0x1f || buffer[1] != 0x8b {
- return Err(bad_header());
- }
- // Gzip compression method (8 = deflate)
- if buffer[2] != 8 {
- return Err(bad_header());
- }
- self.flags = buffer[3];
- // RFC1952: "must give an error indication if any reserved bit is non-zero"
- if self.flags & FRESERVED != 0 {
- return Err(bad_header());
- }
- self.header.mtime = ((buffer[4] as u32) << 0)
- | ((buffer[5] as u32) << 8)
- | ((buffer[6] as u32) << 16)
- | ((buffer[7] as u32) << 24);
- let _xfl = buffer[8];
- self.header.operating_system = buffer[9];
- let crc = if self.flags & FHCRC != 0 {
- let mut crc = Box::new(Crc::new());
- crc.update(buffer);
- Some(crc)
- } else {
- None
- };
- self.state = GzHeaderState::Xlen(crc, 0, [0; 2]);
- }
- GzHeaderState::Xlen(crc, count, buffer) => {
- if self.flags & FEXTRA != 0 {
- while (*count as usize) < buffer.len() {
- *count += read_into(r, &mut buffer[*count as usize..])? as u8;
- }
- if let Some(crc) = crc {
- crc.update(buffer);
- }
- let xlen = parse_le_u16(&buffer);
- self.header.extra = Some(vec![0; xlen as usize]);
- self.state = GzHeaderState::Extra(crc.take(), 0);
- } else {
- self.state = GzHeaderState::Filename(crc.take());
- }
- }
- GzHeaderState::Extra(crc, count) => {
- debug_assert!(self.header.extra.is_some());
- let extra = self.header.extra.as_mut().unwrap();
- while (*count as usize) < extra.len() {
- *count += read_into(r, &mut extra[*count as usize..])? as u16;
- }
- if let Some(crc) = crc {
- crc.update(extra);
- }
- self.state = GzHeaderState::Filename(crc.take());
- }
- GzHeaderState::Filename(crc) => {
- if self.flags & FNAME != 0 {
- let filename = self.header.filename.get_or_insert_with(Vec::new);
- read_to_nul(r, filename)?;
- if let Some(crc) = crc {
- crc.update(filename);
- crc.update(b"\0");
- }
- }
- self.state = GzHeaderState::Comment(crc.take());
- }
- GzHeaderState::Comment(crc) => {
- if self.flags & FCOMMENT != 0 {
- let comment = self.header.comment.get_or_insert_with(Vec::new);
- read_to_nul(r, comment)?;
- if let Some(crc) = crc {
- crc.update(comment);
- crc.update(b"\0");
- }
- }
- self.state = GzHeaderState::Crc(crc.take(), 0, [0; 2]);
- }
- GzHeaderState::Crc(crc, count, buffer) => {
- if let Some(crc) = crc {
- debug_assert!(self.flags & FHCRC != 0);
- while (*count as usize) < buffer.len() {
- *count += read_into(r, &mut buffer[*count as usize..])? as u8;
- }
- let stored_crc = parse_le_u16(&buffer);
- let calced_crc = crc.sum() as u16;
- if stored_crc != calced_crc {
- return Err(corrupt());
- }
- }
- self.state = GzHeaderState::Complete;
- }
- GzHeaderState::Complete => {
- return Ok(());
- }
- }
- }
- }
-
- fn header(&self) -> Option<&GzHeader> {
- match self.state {
- GzHeaderState::Complete => Some(&self.header),
- _ => None,
- }
- }
-}
-
-impl From<GzHeaderParser> for GzHeader {
- fn from(parser: GzHeaderParser) -> Self {
- debug_assert!(matches!(parser.state, GzHeaderState::Complete));
- parser.header
- }
-}
-
-// Attempt to fill the `buffer` from `r`. Return the number of bytes read.
-// Return an error if EOF is read before the buffer is full. This differs
-// from `read` in that Ok(0) means that more data may be available.
-fn read_into<R: Read>(r: &mut R, buffer: &mut [u8]) -> Result<usize> {
- debug_assert!(!buffer.is_empty());
- match r.read(buffer) {
- Ok(0) => Err(ErrorKind::UnexpectedEof.into()),
- Ok(n) => Ok(n),
- Err(ref e) if e.kind() == ErrorKind::Interrupted => Ok(0),
- Err(e) => Err(e),
- }
-}
-
-// Read `r` up to the first nul byte, pushing non-nul bytes to `buffer`.
-fn read_to_nul<R: Read>(r: &mut R, buffer: &mut Vec<u8>) -> Result<()> {
- let mut bytes = r.bytes();
- loop {
- match bytes.next().transpose()? {
- Some(byte) if byte == 0 => {
- return Ok(());
- }
- Some(_) if buffer.len() == MAX_HEADER_BUF => {
- return Err(Error::new(
- ErrorKind::InvalidInput,
- "gzip header field too long",
- ));
- }
- Some(byte) => {
- buffer.push(byte);
- }
- None => {
- return Err(ErrorKind::UnexpectedEof.into());
- }
- }
- }
-}
-
-fn parse_le_u16(buffer: &[u8; 2]) -> u16 {
- (buffer[0] as u16) | ((buffer[1] as u16) << 8)
-}
-
-fn bad_header() -> Error {
- Error::new(ErrorKind::InvalidInput, "invalid gzip header")
-}
-
-fn corrupt() -> Error {
- Error::new(
- ErrorKind::InvalidInput,
- "corrupt gzip stream does not have a matching checksum",
- )
-}
-
-/// A builder structure to create a new gzip Encoder.
-///
-/// This structure controls header configuration options such as the filename.
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// # use std::io;
-/// use std::fs::File;
-/// use flate2::GzBuilder;
-/// use flate2::Compression;
-///
-/// // GzBuilder opens a file and writes a sample string using GzBuilder pattern
-///
-/// # fn sample_builder() -> Result<(), io::Error> {
-/// let f = File::create("examples/hello_world.gz")?;
-/// let mut gz = GzBuilder::new()
-/// .filename("hello_world.txt")
-/// .comment("test file, please delete")
-/// .write(f, Compression::default());
-/// gz.write_all(b"hello world")?;
-/// gz.finish()?;
-/// # Ok(())
-/// # }
-/// ```
-#[derive(Debug)]
-pub struct GzBuilder {
- extra: Option<Vec<u8>>,
- filename: Option<CString>,
- comment: Option<CString>,
- operating_system: Option<u8>,
- mtime: u32,
-}
-
-impl Default for GzBuilder {
- fn default() -> Self {
- Self::new()
- }
-}
-
-impl GzBuilder {
- /// Create a new blank builder with no header by default.
- pub fn new() -> GzBuilder {
- GzBuilder {
- extra: None,
- filename: None,
- comment: None,
- operating_system: None,
- mtime: 0,
- }
- }
-
- /// Configure the `mtime` field in the gzip header.
- pub fn mtime(mut self, mtime: u32) -> GzBuilder {
- self.mtime = mtime;
- self
- }
-
- /// Configure the `operating_system` field in the gzip header.
- pub fn operating_system(mut self, os: u8) -> GzBuilder {
- self.operating_system = Some(os);
- self
- }
-
- /// Configure the `extra` field in the gzip header.
- pub fn extra<T: Into<Vec<u8>>>(mut self, extra: T) -> GzBuilder {
- self.extra = Some(extra.into());
- self
- }
-
- /// Configure the `filename` field in the gzip header.
- ///
- /// # Panics
- ///
- /// Panics if the `filename` slice contains a zero.
- pub fn filename<T: Into<Vec<u8>>>(mut self, filename: T) -> GzBuilder {
- self.filename = Some(CString::new(filename.into()).unwrap());
- self
- }
-
- /// Configure the `comment` field in the gzip header.
- ///
- /// # Panics
- ///
- /// Panics if the `comment` slice contains a zero.
- pub fn comment<T: Into<Vec<u8>>>(mut self, comment: T) -> GzBuilder {
- self.comment = Some(CString::new(comment.into()).unwrap());
- self
- }
-
- /// Consume this builder, creating a writer encoder in the process.
- ///
- /// The data written to the returned encoder will be compressed and then
- /// written out to the supplied parameter `w`.
- pub fn write<W: Write>(self, w: W, lvl: Compression) -> write::GzEncoder<W> {
- write::gz_encoder(self.into_header(lvl), w, lvl)
- }
-
- /// Consume this builder, creating a reader encoder in the process.
- ///
- /// Data read from the returned encoder will be the compressed version of
- /// the data read from the given reader.
- pub fn read<R: Read>(self, r: R, lvl: Compression) -> read::GzEncoder<R> {
- read::gz_encoder(self.buf_read(BufReader::new(r), lvl))
- }
-
- /// Consume this builder, creating a reader encoder in the process.
- ///
- /// Data read from the returned encoder will be the compressed version of
- /// the data read from the given reader.
- pub fn buf_read<R>(self, r: R, lvl: Compression) -> bufread::GzEncoder<R>
- where
- R: BufRead,
- {
- bufread::gz_encoder(self.into_header(lvl), r, lvl)
- }
-
- fn into_header(self, lvl: Compression) -> Vec<u8> {
- let GzBuilder {
- extra,
- filename,
- comment,
- operating_system,
- mtime,
- } = self;
- let mut flg = 0;
- let mut header = vec![0u8; 10];
- if let Some(v) = extra {
- flg |= FEXTRA;
- header.push((v.len() >> 0) as u8);
- header.push((v.len() >> 8) as u8);
- header.extend(v);
- }
- if let Some(filename) = filename {
- flg |= FNAME;
- header.extend(filename.as_bytes_with_nul().iter().copied());
- }
- if let Some(comment) = comment {
- flg |= FCOMMENT;
- header.extend(comment.as_bytes_with_nul().iter().copied());
- }
- header[0] = 0x1f;
- header[1] = 0x8b;
- header[2] = 8;
- header[3] = flg;
- header[4] = (mtime >> 0) as u8;
- header[5] = (mtime >> 8) as u8;
- header[6] = (mtime >> 16) as u8;
- header[7] = (mtime >> 24) as u8;
- header[8] = if lvl.0 >= Compression::best().0 {
- 2
- } else if lvl.0 <= Compression::fast().0 {
- 4
- } else {
- 0
- };
-
- // Typically this byte indicates what OS the gz stream was created on,
- // but in an effort to have cross-platform reproducible streams just
- // default this value to 255. I'm not sure that if we "correctly" set
- // this it'd do anything anyway...
- header[9] = operating_system.unwrap_or(255);
- header
- }
-}
-
-#[cfg(test)]
-mod tests {
- use std::io::prelude::*;
-
- use super::{read, write, GzBuilder, GzHeaderParser};
- use crate::{Compression, GzHeader};
- use rand::{thread_rng, Rng};
-
- #[test]
- fn roundtrip() {
- let mut e = write::GzEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"foo bar baz").unwrap();
- let inner = e.finish().unwrap();
- let mut d = read::GzDecoder::new(&inner[..]);
- let mut s = String::new();
- d.read_to_string(&mut s).unwrap();
- assert_eq!(s, "foo bar baz");
- }
-
- #[test]
- fn roundtrip_zero() {
- let e = write::GzEncoder::new(Vec::new(), Compression::default());
- let inner = e.finish().unwrap();
- let mut d = read::GzDecoder::new(&inner[..]);
- let mut s = String::new();
- d.read_to_string(&mut s).unwrap();
- assert_eq!(s, "");
- }
-
- #[test]
- fn roundtrip_big() {
- let mut real = Vec::new();
- let mut w = write::GzEncoder::new(Vec::new(), Compression::default());
- let v = crate::random_bytes().take(1024).collect::<Vec<_>>();
- for _ in 0..200 {
- let to_write = &v[..thread_rng().gen_range(0..v.len())];
- real.extend(to_write.iter().copied());
- w.write_all(to_write).unwrap();
- }
- let result = w.finish().unwrap();
- let mut r = read::GzDecoder::new(&result[..]);
- let mut v = Vec::new();
- r.read_to_end(&mut v).unwrap();
- assert_eq!(v, real);
- }
-
- #[test]
- fn roundtrip_big2() {
- let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>();
- let mut r = read::GzDecoder::new(read::GzEncoder::new(&v[..], Compression::default()));
- let mut res = Vec::new();
- r.read_to_end(&mut res).unwrap();
- assert_eq!(res, v);
- }
-
- // A Rust implementation of CRC that closely matches the C code in RFC1952.
- // Only use this to create CRCs for tests.
- struct Rfc1952Crc {
- /* Table of CRCs of all 8-bit messages. */
- crc_table: [u32; 256],
- }
-
- impl Rfc1952Crc {
- fn new() -> Self {
- let mut crc = Rfc1952Crc {
- crc_table: [0; 256],
- };
- /* Make the table for a fast CRC. */
- for n in 0usize..256 {
- let mut c = n as u32;
- for _k in 0..8 {
- if c & 1 != 0 {
- c = 0xedb88320 ^ (c >> 1);
- } else {
- c = c >> 1;
- }
- }
- crc.crc_table[n] = c;
- }
- crc
- }
-
- /*
- Update a running crc with the bytes buf and return
- the updated crc. The crc should be initialized to zero. Pre- and
- post-conditioning (one's complement) is performed within this
- function so it shouldn't be done by the caller.
- */
- fn update_crc(&self, crc: u32, buf: &[u8]) -> u32 {
- let mut c = crc ^ 0xffffffff;
-
- for b in buf {
- c = self.crc_table[(c as u8 ^ *b) as usize] ^ (c >> 8);
- }
- c ^ 0xffffffff
- }
-
- /* Return the CRC of the bytes buf. */
- fn crc(&self, buf: &[u8]) -> u32 {
- self.update_crc(0, buf)
- }
- }
-
- #[test]
- fn roundtrip_header() {
- let mut header = GzBuilder::new()
- .mtime(1234)
- .operating_system(57)
- .filename("filename")
- .comment("comment")
- .into_header(Compression::fast());
-
- // Add a CRC to the header
- header[3] = header[3] ^ super::FHCRC;
- let rfc1952_crc = Rfc1952Crc::new();
- let crc32 = rfc1952_crc.crc(&header);
- let crc16 = crc32 as u16;
- header.extend(&crc16.to_le_bytes());
-
- let mut parser = GzHeaderParser::new();
- parser.parse(&mut header.as_slice()).unwrap();
- let actual = parser.header().unwrap();
- assert_eq!(
- actual,
- &GzHeader {
- extra: None,
- filename: Some("filename".as_bytes().to_vec()),
- comment: Some("comment".as_bytes().to_vec()),
- operating_system: 57,
- mtime: 1234
- }
- )
- }
-
- #[test]
- fn fields() {
- let r = vec![0, 2, 4, 6];
- let e = GzBuilder::new()
- .filename("foo.rs")
- .comment("bar")
- .extra(vec![0, 1, 2, 3])
- .read(&r[..], Compression::default());
- let mut d = read::GzDecoder::new(e);
- assert_eq!(d.header().unwrap().filename(), Some(&b"foo.rs"[..]));
- assert_eq!(d.header().unwrap().comment(), Some(&b"bar"[..]));
- assert_eq!(d.header().unwrap().extra(), Some(&b"\x00\x01\x02\x03"[..]));
- let mut res = Vec::new();
- d.read_to_end(&mut res).unwrap();
- assert_eq!(res, vec![0, 2, 4, 6]);
- }
-
- #[test]
- fn keep_reading_after_end() {
- let mut e = write::GzEncoder::new(Vec::new(), Compression::default());
- e.write_all(b"foo bar baz").unwrap();
- let inner = e.finish().unwrap();
- let mut d = read::GzDecoder::new(&inner[..]);
- let mut s = String::new();
- d.read_to_string(&mut s).unwrap();
- assert_eq!(s, "foo bar baz");
- d.read_to_string(&mut s).unwrap();
- assert_eq!(s, "foo bar baz");
- }
-
- #[test]
- fn qc_reader() {
- ::quickcheck::quickcheck(test as fn(_) -> _);
-
- fn test(v: Vec<u8>) -> bool {
- let r = read::GzEncoder::new(&v[..], Compression::default());
- let mut r = read::GzDecoder::new(r);
- let mut v2 = Vec::new();
- r.read_to_end(&mut v2).unwrap();
- v == v2
- }
- }
-
- #[test]
- fn flush_after_write() {
- let mut f = write::GzEncoder::new(Vec::new(), Compression::default());
- write!(f, "Hello world").unwrap();
- f.flush().unwrap();
- }
-}
diff --git a/vendor/flate2/src/gz/read.rs b/vendor/flate2/src/gz/read.rs
deleted file mode 100644
index 9dbadbd..0000000
--- a/vendor/flate2/src/gz/read.rs
+++ /dev/null
@@ -1,378 +0,0 @@
-use std::io;
-use std::io::prelude::*;
-
-use super::bufread;
-use super::{GzBuilder, GzHeader};
-use crate::bufreader::BufReader;
-use crate::Compression;
-
-/// A gzip streaming encoder
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// uncompressed data from the underlying [`Read`] and provides the compressed data.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// use flate2::Compression;
-/// use flate2::read::GzEncoder;
-///
-/// // Return a vector containing the GZ compressed version of hello world
-///
-/// fn gzencode_hello_world() -> io::Result<Vec<u8>> {
-/// let mut ret_vec = Vec::new();
-/// let bytestring = b"hello world";
-/// let mut gz = GzEncoder::new(&bytestring[..], Compression::fast());
-/// gz.read_to_end(&mut ret_vec)?;
-/// Ok(ret_vec)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct GzEncoder<R> {
- inner: bufread::GzEncoder<BufReader<R>>,
-}
-
-pub fn gz_encoder<R: Read>(inner: bufread::GzEncoder<BufReader<R>>) -> GzEncoder<R> {
- GzEncoder { inner }
-}
-
-impl<R: Read> GzEncoder<R> {
- /// Creates a new encoder which will use the given compression level.
- ///
- /// The encoder is not configured specially for the emitted header. For
- /// header configuration, see the `GzBuilder` type.
- ///
- /// The data read from the stream `r` will be compressed and available
- /// through the returned reader.
- pub fn new(r: R, level: Compression) -> GzEncoder<R> {
- GzBuilder::new().read(r, level)
- }
-}
-
-impl<R> GzEncoder<R> {
- /// Acquires a reference to the underlying reader.
- pub fn get_ref(&self) -> &R {
- self.inner.get_ref().get_ref()
- }
-
- /// Acquires a mutable reference to the underlying reader.
- ///
- /// Note that mutation of the reader may result in surprising results if
- /// this encoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- self.inner.get_mut().get_mut()
- }
-
- /// Returns the underlying stream, consuming this encoder
- pub fn into_inner(self) -> R {
- self.inner.into_inner().into_inner()
- }
-}
-
-impl<R: Read> Read for GzEncoder<R> {
- fn read(&mut self, into: &mut [u8]) -> io::Result<usize> {
- self.inner.read(into)
- }
-}
-
-impl<R: Read + Write> Write for GzEncoder<R> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
-
-/// A decoder for a single member of a [gzip file].
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// compressed data from the underlying [`Read`] and provides the uncompressed data.
-///
-/// After reading a single member of the gzip data this reader will return
-/// Ok(0) even if there are more bytes available in the underlying reader.
-/// `GzDecoder` may have read additional bytes past the end of the gzip data.
-/// If you need the following bytes, wrap the `Reader` in a `std::io::BufReader`
-/// and use `bufread::GzDecoder` instead.
-///
-/// To handle gzip files that may have multiple members, see [`MultiGzDecoder`]
-/// or read more
-/// [in the introduction](../index.html#about-multi-member-gzip-files).
-///
-/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// # use flate2::Compression;
-/// # use flate2::write::GzEncoder;
-/// use flate2::read::GzDecoder;
-///
-/// # fn main() {
-/// # let mut e = GzEncoder::new(Vec::new(), Compression::default());
-/// # e.write_all(b"Hello World").unwrap();
-/// # let bytes = e.finish().unwrap();
-/// # println!("{}", decode_reader(bytes).unwrap());
-/// # }
-/// #
-/// // Uncompresses a Gz Encoded vector of bytes and returns a string or error
-/// // Here &[u8] implements Read
-///
-/// fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
-/// let mut gz = GzDecoder::new(&bytes[..]);
-/// let mut s = String::new();
-/// gz.read_to_string(&mut s)?;
-/// Ok(s)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct GzDecoder<R> {
- inner: bufread::GzDecoder<BufReader<R>>,
-}
-
-impl<R: Read> GzDecoder<R> {
- /// Creates a new decoder from the given reader, immediately parsing the
- /// gzip header.
- pub fn new(r: R) -> GzDecoder<R> {
- GzDecoder {
- inner: bufread::GzDecoder::new(BufReader::new(r)),
- }
- }
-}
-
-impl<R> GzDecoder<R> {
- /// Returns the header associated with this stream, if it was valid.
- pub fn header(&self) -> Option<&GzHeader> {
- self.inner.header()
- }
-
- /// Acquires a reference to the underlying reader.
- ///
- /// Note that the decoder may have read past the end of the gzip data.
- /// To prevent this use [`bufread::GzDecoder`] instead.
- pub fn get_ref(&self) -> &R {
- self.inner.get_ref().get_ref()
- }
-
- /// Acquires a mutable reference to the underlying stream.
- ///
- /// Note that mutation of the stream may result in surprising results if
- /// this decoder continues to be used.
- ///
- /// Note that the decoder may have read past the end of the gzip data.
- /// To prevent this use [`bufread::GzDecoder`] instead.
- pub fn get_mut(&mut self) -> &mut R {
- self.inner.get_mut().get_mut()
- }
-
- /// Consumes this decoder, returning the underlying reader.
- ///
- /// Note that the decoder may have read past the end of the gzip data.
- /// Subsequent reads will skip those bytes. To prevent this use
- /// [`bufread::GzDecoder`] instead.
- pub fn into_inner(self) -> R {
- self.inner.into_inner().into_inner()
- }
-}
-
-impl<R: Read> Read for GzDecoder<R> {
- fn read(&mut self, into: &mut [u8]) -> io::Result<usize> {
- self.inner.read(into)
- }
-}
-
-impl<R: Read + Write> Write for GzDecoder<R> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
-
-/// A gzip streaming decoder that decodes a [gzip file] that may have multiple members.
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// compressed data from the underlying [`Read`] and provides the uncompressed
-/// data.
-///
-/// A gzip file consists of a series of *members* concatenated one after another.
-/// MultiGzDecoder decodes all members of a file and returns Ok(0) once the
-/// underlying reader does.
-///
-/// To handle members seperately, see [GzDecoder] or read more
-/// [in the introduction](../index.html#about-multi-member-gzip-files).
-///
-/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// # use flate2::Compression;
-/// # use flate2::write::GzEncoder;
-/// use flate2::read::MultiGzDecoder;
-///
-/// # fn main() {
-/// # let mut e = GzEncoder::new(Vec::new(), Compression::default());
-/// # e.write_all(b"Hello World").unwrap();
-/// # let bytes = e.finish().unwrap();
-/// # println!("{}", decode_reader(bytes).unwrap());
-/// # }
-/// #
-/// // Uncompresses a Gz Encoded vector of bytes and returns a string or error
-/// // Here &[u8] implements Read
-///
-/// fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
-/// let mut gz = MultiGzDecoder::new(&bytes[..]);
-/// let mut s = String::new();
-/// gz.read_to_string(&mut s)?;
-/// Ok(s)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct MultiGzDecoder<R> {
- inner: bufread::MultiGzDecoder<BufReader<R>>,
-}
-
-impl<R: Read> MultiGzDecoder<R> {
- /// Creates a new decoder from the given reader, immediately parsing the
- /// (first) gzip header. If the gzip stream contains multiple members all will
- /// be decoded.
- pub fn new(r: R) -> MultiGzDecoder<R> {
- MultiGzDecoder {
- inner: bufread::MultiGzDecoder::new(BufReader::new(r)),
- }
- }
-}
-
-impl<R> MultiGzDecoder<R> {
- /// Returns the current header associated with this stream, if it's valid.
- pub fn header(&self) -> Option<&GzHeader> {
- self.inner.header()
- }
-
- /// Acquires a reference to the underlying reader.
- pub fn get_ref(&self) -> &R {
- self.inner.get_ref().get_ref()
- }
-
- /// Acquires a mutable reference to the underlying stream.
- ///
- /// Note that mutation of the stream may result in surprising results if
- /// this decoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- self.inner.get_mut().get_mut()
- }
-
- /// Consumes this decoder, returning the underlying reader.
- pub fn into_inner(self) -> R {
- self.inner.into_inner().into_inner()
- }
-}
-
-impl<R: Read> Read for MultiGzDecoder<R> {
- fn read(&mut self, into: &mut [u8]) -> io::Result<usize> {
- self.inner.read(into)
- }
-}
-
-impl<R: Read + Write> Write for MultiGzDecoder<R> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
-
-#[cfg(test)]
-mod tests {
- use std::io::{Cursor, ErrorKind, Read, Result, Write};
-
- use super::GzDecoder;
-
- //a cursor turning EOF into blocking errors
- #[derive(Debug)]
- pub struct BlockingCursor {
- pub cursor: Cursor<Vec<u8>>,
- }
-
- impl BlockingCursor {
- pub fn new() -> BlockingCursor {
- BlockingCursor {
- cursor: Cursor::new(Vec::new()),
- }
- }
-
- pub fn set_position(&mut self, pos: u64) {
- return self.cursor.set_position(pos);
- }
- }
-
- impl Write for BlockingCursor {
- fn write(&mut self, buf: &[u8]) -> Result<usize> {
- return self.cursor.write(buf);
- }
- fn flush(&mut self) -> Result<()> {
- return self.cursor.flush();
- }
- }
-
- impl Read for BlockingCursor {
- fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
- //use the cursor, except it turns eof into blocking error
- let r = self.cursor.read(buf);
- match r {
- Err(ref err) => {
- if err.kind() == ErrorKind::UnexpectedEof {
- return Err(ErrorKind::WouldBlock.into());
- }
- }
- Ok(0) => {
- //regular EOF turned into blocking error
- return Err(ErrorKind::WouldBlock.into());
- }
- Ok(_n) => {}
- }
- return r;
- }
- }
-
- #[test]
- fn blocked_partial_header_read() {
- // this is a reader which receives data afterwards
- let mut r = BlockingCursor::new();
- let data = vec![1, 2, 3];
-
- match r.write_all(&data) {
- Ok(()) => {}
- _ => {
- panic!("Unexpected result for write_all");
- }
- }
- r.set_position(0);
-
- // this is unused except for the buffering
- let mut decoder = GzDecoder::new(r);
- let mut out = Vec::with_capacity(7);
- match decoder.read(&mut out) {
- Err(e) => {
- assert_eq!(e.kind(), ErrorKind::WouldBlock);
- }
- _ => {
- panic!("Unexpected result for decoder.read");
- }
- }
- }
-}
diff --git a/vendor/flate2/src/gz/write.rs b/vendor/flate2/src/gz/write.rs
deleted file mode 100644
index 74d6c5a..0000000
--- a/vendor/flate2/src/gz/write.rs
+++ /dev/null
@@ -1,641 +0,0 @@
-use std::cmp;
-use std::io;
-use std::io::prelude::*;
-
-use super::{corrupt, GzBuilder, GzHeader, GzHeaderParser};
-use crate::crc::{Crc, CrcWriter};
-use crate::zio;
-use crate::{Compress, Compression, Decompress, Status};
-
-/// A gzip streaming encoder
-///
-/// This structure exposes a [`Write`] interface that will emit compressed data
-/// to the underlying writer `W`.
-///
-/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use flate2::Compression;
-/// use flate2::write::GzEncoder;
-///
-/// // Vec<u8> implements Write to print the compressed bytes of sample string
-/// # fn main() {
-///
-/// let mut e = GzEncoder::new(Vec::new(), Compression::default());
-/// e.write_all(b"Hello World").unwrap();
-/// println!("{:?}", e.finish().unwrap());
-/// # }
-/// ```
-#[derive(Debug)]
-pub struct GzEncoder<W: Write> {
- inner: zio::Writer<W, Compress>,
- crc: Crc,
- crc_bytes_written: usize,
- header: Vec<u8>,
-}
-
-pub fn gz_encoder<W: Write>(header: Vec<u8>, w: W, lvl: Compression) -> GzEncoder<W> {
- GzEncoder {
- inner: zio::Writer::new(w, Compress::new(lvl, false)),
- crc: Crc::new(),
- header,
- crc_bytes_written: 0,
- }
-}
-
-impl<W: Write> GzEncoder<W> {
- /// Creates a new encoder which will use the given compression level.
- ///
- /// The encoder is not configured specially for the emitted header. For
- /// header configuration, see the `GzBuilder` type.
- ///
- /// The data written to the returned encoder will be compressed and then
- /// written to the stream `w`.
- pub fn new(w: W, level: Compression) -> GzEncoder<W> {
- GzBuilder::new().write(w, level)
- }
-
- /// Acquires a reference to the underlying writer.
- pub fn get_ref(&self) -> &W {
- self.inner.get_ref()
- }
-
- /// Acquires a mutable reference to the underlying writer.
- ///
- /// Note that mutation of the writer may result in surprising results if
- /// this encoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut W {
- self.inner.get_mut()
- }
-
- /// Attempt to finish this output stream, writing out final chunks of data.
- ///
- /// Note that this function can only be used once data has finished being
- /// written to the output stream. After this function is called then further
- /// calls to `write` may result in a panic.
- ///
- /// # Panics
- ///
- /// Attempts to write data to this stream may result in a panic after this
- /// function is called.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn try_finish(&mut self) -> io::Result<()> {
- self.write_header()?;
- self.inner.finish()?;
-
- while self.crc_bytes_written < 8 {
- let (sum, amt) = (self.crc.sum(), self.crc.amount());
- let buf = [
- (sum >> 0) as u8,
- (sum >> 8) as u8,
- (sum >> 16) as u8,
- (sum >> 24) as u8,
- (amt >> 0) as u8,
- (amt >> 8) as u8,
- (amt >> 16) as u8,
- (amt >> 24) as u8,
- ];
- let inner = self.inner.get_mut();
- let n = inner.write(&buf[self.crc_bytes_written..])?;
- self.crc_bytes_written += n;
- }
- Ok(())
- }
-
- /// Finish encoding this stream, returning the underlying writer once the
- /// encoding is done.
- ///
- /// Note that this function may not be suitable to call in a situation where
- /// the underlying stream is an asynchronous I/O stream. To finish a stream
- /// the `try_finish` (or `shutdown`) method should be used instead. To
- /// re-acquire ownership of a stream it is safe to call this method after
- /// `try_finish` or `shutdown` has returned `Ok`.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn finish(mut self) -> io::Result<W> {
- self.try_finish()?;
- Ok(self.inner.take_inner())
- }
-
- fn write_header(&mut self) -> io::Result<()> {
- while !self.header.is_empty() {
- let n = self.inner.get_mut().write(&self.header)?;
- self.header.drain(..n);
- }
- Ok(())
- }
-}
-
-impl<W: Write> Write for GzEncoder<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- assert_eq!(self.crc_bytes_written, 0);
- self.write_header()?;
- let n = self.inner.write(buf)?;
- self.crc.update(&buf[..n]);
- Ok(n)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- assert_eq!(self.crc_bytes_written, 0);
- self.write_header()?;
- self.inner.flush()
- }
-}
-
-impl<R: Read + Write> Read for GzEncoder<R> {
- fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
- self.get_mut().read(buf)
- }
-}
-
-impl<W: Write> Drop for GzEncoder<W> {
- fn drop(&mut self) {
- if self.inner.is_present() {
- let _ = self.try_finish();
- }
- }
-}
-
-/// A decoder for a single member of a [gzip file].
-///
-/// This structure exposes a [`Write`] interface, receiving compressed data and
-/// writing uncompressed data to the underlying writer.
-///
-/// After decoding a single member of the gzip data this writer will return the number of bytes up to
-/// to the end of the gzip member and subsequent writes will return Ok(0) allowing the caller to
-/// handle any data following the gzip member.
-///
-/// To handle gzip files that may have multiple members, see [`MultiGzDecoder`]
-/// or read more
-/// [in the introduction](../index.html#about-multi-member-gzip-files).
-///
-/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5
-/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// use flate2::Compression;
-/// use flate2::write::{GzEncoder, GzDecoder};
-///
-/// # fn main() {
-/// # let mut e = GzEncoder::new(Vec::new(), Compression::default());
-/// # e.write(b"Hello World").unwrap();
-/// # let bytes = e.finish().unwrap();
-/// # assert_eq!("Hello World", decode_writer(bytes).unwrap());
-/// # }
-/// // Uncompresses a gzip encoded vector of bytes and returns a string or error
-/// // Here Vec<u8> implements Write
-/// fn decode_writer(bytes: Vec<u8>) -> io::Result<String> {
-/// let mut writer = Vec::new();
-/// let mut decoder = GzDecoder::new(writer);
-/// decoder.write_all(&bytes[..])?;
-/// writer = decoder.finish()?;
-/// let return_string = String::from_utf8(writer).expect("String parsing error");
-/// Ok(return_string)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct GzDecoder<W: Write> {
- inner: zio::Writer<CrcWriter<W>, Decompress>,
- crc_bytes: Vec<u8>,
- header_parser: GzHeaderParser,
-}
-
-const CRC_BYTES_LEN: usize = 8;
-
-impl<W: Write> GzDecoder<W> {
- /// Creates a new decoder which will write uncompressed data to the stream.
- ///
- /// When this encoder is dropped or unwrapped the final pieces of data will
- /// be flushed.
- pub fn new(w: W) -> GzDecoder<W> {
- GzDecoder {
- inner: zio::Writer::new(CrcWriter::new(w), Decompress::new(false)),
- crc_bytes: Vec::with_capacity(CRC_BYTES_LEN),
- header_parser: GzHeaderParser::new(),
- }
- }
-
- /// Returns the header associated with this stream.
- pub fn header(&self) -> Option<&GzHeader> {
- self.header_parser.header()
- }
-
- /// Acquires a reference to the underlying writer.
- pub fn get_ref(&self) -> &W {
- self.inner.get_ref().get_ref()
- }
-
- /// Acquires a mutable reference to the underlying writer.
- ///
- /// Note that mutating the output/input state of the stream may corrupt this
- /// object, so care must be taken when using this method.
- pub fn get_mut(&mut self) -> &mut W {
- self.inner.get_mut().get_mut()
- }
-
- /// Attempt to finish this output stream, writing out final chunks of data.
- ///
- /// Note that this function can only be used once data has finished being
- /// written to the output stream. After this function is called then further
- /// calls to `write` may result in a panic.
- ///
- /// # Panics
- ///
- /// Attempts to write data to this stream may result in a panic after this
- /// function is called.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to finish the stream, returning any
- /// errors which happen.
- pub fn try_finish(&mut self) -> io::Result<()> {
- self.finish_and_check_crc()?;
- Ok(())
- }
-
- /// Consumes this decoder, flushing the output stream.
- ///
- /// This will flush the underlying data stream and then return the contained
- /// writer if the flush succeeded.
- ///
- /// Note that this function may not be suitable to call in a situation where
- /// the underlying stream is an asynchronous I/O stream. To finish a stream
- /// the `try_finish` (or `shutdown`) method should be used instead. To
- /// re-acquire ownership of a stream it is safe to call this method after
- /// `try_finish` or `shutdown` has returned `Ok`.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn finish(mut self) -> io::Result<W> {
- self.finish_and_check_crc()?;
- Ok(self.inner.take_inner().into_inner())
- }
-
- fn finish_and_check_crc(&mut self) -> io::Result<()> {
- self.inner.finish()?;
-
- if self.crc_bytes.len() != 8 {
- return Err(corrupt());
- }
-
- let crc = ((self.crc_bytes[0] as u32) << 0)
- | ((self.crc_bytes[1] as u32) << 8)
- | ((self.crc_bytes[2] as u32) << 16)
- | ((self.crc_bytes[3] as u32) << 24);
- let amt = ((self.crc_bytes[4] as u32) << 0)
- | ((self.crc_bytes[5] as u32) << 8)
- | ((self.crc_bytes[6] as u32) << 16)
- | ((self.crc_bytes[7] as u32) << 24);
- if crc != self.inner.get_ref().crc().sum() {
- return Err(corrupt());
- }
- if amt != self.inner.get_ref().crc().amount() {
- return Err(corrupt());
- }
- Ok(())
- }
-}
-
-impl<W: Write> Write for GzDecoder<W> {
- fn write(&mut self, mut buf: &[u8]) -> io::Result<usize> {
- let buflen = buf.len();
- if self.header().is_none() {
- match self.header_parser.parse(&mut buf) {
- Err(err) => {
- if err.kind() == io::ErrorKind::UnexpectedEof {
- // all data read but header still not complete
- Ok(buflen)
- } else {
- Err(err)
- }
- }
- Ok(_) => {
- debug_assert!(self.header().is_some());
- // buf now contains the unread part of the original buf
- let n = buflen - buf.len();
- Ok(n)
- }
- }
- } else {
- let (n, status) = self.inner.write_with_status(buf)?;
-
- if status == Status::StreamEnd && n < buf.len() && self.crc_bytes.len() < 8 {
- let remaining = buf.len() - n;
- let crc_bytes = cmp::min(remaining, CRC_BYTES_LEN - self.crc_bytes.len());
- self.crc_bytes.extend(&buf[n..n + crc_bytes]);
- return Ok(n + crc_bytes);
- }
- Ok(n)
- }
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.inner.flush()
- }
-}
-
-impl<W: Read + Write> Read for GzDecoder<W> {
- fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
- self.inner.get_mut().get_mut().read(buf)
- }
-}
-
-/// A gzip streaming decoder that decodes a [gzip file] with multiple members.
-///
-/// This structure exposes a [`Write`] interface that will consume compressed data and
-/// write uncompressed data to the underlying writer.
-///
-/// A gzip file consists of a series of *members* concatenated one after another.
-/// `MultiGzDecoder` decodes all members of a file and writes them to the
-/// underlying writer one after another.
-///
-/// To handle members separately, see [GzDecoder] or read more
-/// [in the introduction](../index.html#about-multi-member-gzip-files).
-///
-/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5
-#[derive(Debug)]
-pub struct MultiGzDecoder<W: Write> {
- inner: GzDecoder<W>,
-}
-
-impl<W: Write> MultiGzDecoder<W> {
- /// Creates a new decoder which will write uncompressed data to the stream.
- /// If the gzip stream contains multiple members all will be decoded.
- pub fn new(w: W) -> MultiGzDecoder<W> {
- MultiGzDecoder {
- inner: GzDecoder::new(w),
- }
- }
-
- /// Returns the header associated with the current member.
- pub fn header(&self) -> Option<&GzHeader> {
- self.inner.header()
- }
-
- /// Acquires a reference to the underlying writer.
- pub fn get_ref(&self) -> &W {
- self.inner.get_ref()
- }
-
- /// Acquires a mutable reference to the underlying writer.
- ///
- /// Note that mutating the output/input state of the stream may corrupt this
- /// object, so care must be taken when using this method.
- pub fn get_mut(&mut self) -> &mut W {
- self.inner.get_mut()
- }
-
- /// Attempt to finish this output stream, writing out final chunks of data.
- ///
- /// Note that this function can only be used once data has finished being
- /// written to the output stream. After this function is called then further
- /// calls to `write` may result in a panic.
- ///
- /// # Panics
- ///
- /// Attempts to write data to this stream may result in a panic after this
- /// function is called.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to finish the stream, returning any
- /// errors which happen.
- pub fn try_finish(&mut self) -> io::Result<()> {
- self.inner.try_finish()
- }
-
- /// Consumes this decoder, flushing the output stream.
- ///
- /// This will flush the underlying data stream and then return the contained
- /// writer if the flush succeeded.
- ///
- /// Note that this function may not be suitable to call in a situation where
- /// the underlying stream is an asynchronous I/O stream. To finish a stream
- /// the `try_finish` (or `shutdown`) method should be used instead. To
- /// re-acquire ownership of a stream it is safe to call this method after
- /// `try_finish` or `shutdown` has returned `Ok`.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn finish(self) -> io::Result<W> {
- self.inner.finish()
- }
-}
-
-impl<W: Write> Write for MultiGzDecoder<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- if buf.is_empty() {
- Ok(0)
- } else {
- match self.inner.write(buf) {
- Ok(0) => {
- // When the GzDecoder indicates that it has finished
- // create a new GzDecoder to handle additional data.
- self.inner.try_finish()?;
- let w = self.inner.inner.take_inner().into_inner();
- self.inner = GzDecoder::new(w);
- self.inner.write(buf)
- }
- res => res,
- }
- }
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.inner.flush()
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- const STR: &str = "Hello World Hello World Hello World Hello World Hello World \
- Hello World Hello World Hello World Hello World Hello World \
- Hello World Hello World Hello World Hello World Hello World \
- Hello World Hello World Hello World Hello World Hello World \
- Hello World Hello World Hello World Hello World Hello World";
-
- #[test]
- fn decode_writer_one_chunk() {
- let mut e = GzEncoder::new(Vec::new(), Compression::default());
- e.write(STR.as_ref()).unwrap();
- let bytes = e.finish().unwrap();
-
- let mut writer = Vec::new();
- let mut decoder = GzDecoder::new(writer);
- let n = decoder.write(&bytes[..]).unwrap();
- decoder.write(&bytes[n..]).unwrap();
- decoder.try_finish().unwrap();
- writer = decoder.finish().unwrap();
- let return_string = String::from_utf8(writer).expect("String parsing error");
- assert_eq!(return_string, STR);
- }
-
- #[test]
- fn decode_writer_partial_header() {
- let mut e = GzEncoder::new(Vec::new(), Compression::default());
- e.write(STR.as_ref()).unwrap();
- let bytes = e.finish().unwrap();
-
- let mut writer = Vec::new();
- let mut decoder = GzDecoder::new(writer);
- assert_eq!(decoder.write(&bytes[..5]).unwrap(), 5);
- let n = decoder.write(&bytes[5..]).unwrap();
- if n < bytes.len() - 5 {
- decoder.write(&bytes[n + 5..]).unwrap();
- }
- writer = decoder.finish().unwrap();
- let return_string = String::from_utf8(writer).expect("String parsing error");
- assert_eq!(return_string, STR);
- }
-
- #[test]
- fn decode_writer_partial_header_filename() {
- let filename = "test.txt";
- let mut e = GzBuilder::new()
- .filename(filename)
- .read(STR.as_bytes(), Compression::default());
- let mut bytes = Vec::new();
- e.read_to_end(&mut bytes).unwrap();
-
- let mut writer = Vec::new();
- let mut decoder = GzDecoder::new(writer);
- assert_eq!(decoder.write(&bytes[..12]).unwrap(), 12);
- let n = decoder.write(&bytes[12..]).unwrap();
- if n < bytes.len() - 12 {
- decoder.write(&bytes[n + 12..]).unwrap();
- }
- assert_eq!(
- decoder.header().unwrap().filename().unwrap(),
- filename.as_bytes()
- );
- writer = decoder.finish().unwrap();
- let return_string = String::from_utf8(writer).expect("String parsing error");
- assert_eq!(return_string, STR);
- }
-
- #[test]
- fn decode_writer_partial_header_comment() {
- let comment = "test comment";
- let mut e = GzBuilder::new()
- .comment(comment)
- .read(STR.as_bytes(), Compression::default());
- let mut bytes = Vec::new();
- e.read_to_end(&mut bytes).unwrap();
-
- let mut writer = Vec::new();
- let mut decoder = GzDecoder::new(writer);
- assert_eq!(decoder.write(&bytes[..12]).unwrap(), 12);
- let n = decoder.write(&bytes[12..]).unwrap();
- if n < bytes.len() - 12 {
- decoder.write(&bytes[n + 12..]).unwrap();
- }
- assert_eq!(
- decoder.header().unwrap().comment().unwrap(),
- comment.as_bytes()
- );
- writer = decoder.finish().unwrap();
- let return_string = String::from_utf8(writer).expect("String parsing error");
- assert_eq!(return_string, STR);
- }
-
- #[test]
- fn decode_writer_exact_header() {
- let mut e = GzEncoder::new(Vec::new(), Compression::default());
- e.write(STR.as_ref()).unwrap();
- let bytes = e.finish().unwrap();
-
- let mut writer = Vec::new();
- let mut decoder = GzDecoder::new(writer);
- assert_eq!(decoder.write(&bytes[..10]).unwrap(), 10);
- decoder.write(&bytes[10..]).unwrap();
- writer = decoder.finish().unwrap();
- let return_string = String::from_utf8(writer).expect("String parsing error");
- assert_eq!(return_string, STR);
- }
-
- #[test]
- fn decode_writer_partial_crc() {
- let mut e = GzEncoder::new(Vec::new(), Compression::default());
- e.write(STR.as_ref()).unwrap();
- let bytes = e.finish().unwrap();
-
- let mut writer = Vec::new();
- let mut decoder = GzDecoder::new(writer);
- let l = bytes.len() - 5;
- let n = decoder.write(&bytes[..l]).unwrap();
- decoder.write(&bytes[n..]).unwrap();
- writer = decoder.finish().unwrap();
- let return_string = String::from_utf8(writer).expect("String parsing error");
- assert_eq!(return_string, STR);
- }
-
- // Two or more gzip files concatenated form a multi-member gzip file. MultiGzDecoder will
- // concatenate the decoded contents of all members.
- #[test]
- fn decode_multi_writer() {
- let mut e = GzEncoder::new(Vec::new(), Compression::default());
- e.write(STR.as_ref()).unwrap();
- let bytes = e.finish().unwrap().repeat(2);
-
- let mut writer = Vec::new();
- let mut decoder = MultiGzDecoder::new(writer);
- let mut count = 0;
- while count < bytes.len() {
- let n = decoder.write(&bytes[count..]).unwrap();
- assert!(n != 0);
- count += n;
- }
- writer = decoder.finish().unwrap();
- let return_string = String::from_utf8(writer).expect("String parsing error");
- let expected = STR.repeat(2);
- assert_eq!(return_string, expected);
- }
-
- // GzDecoder consumes one gzip member and then returns 0 for subsequent writes, allowing any
- // additional data to be consumed by the caller.
- #[test]
- fn decode_extra_data() {
- let compressed = {
- let mut e = GzEncoder::new(Vec::new(), Compression::default());
- e.write(STR.as_ref()).unwrap();
- let mut b = e.finish().unwrap();
- b.push(b'x');
- b
- };
-
- let mut writer = Vec::new();
- let mut decoder = GzDecoder::new(writer);
- let mut consumed_bytes = 0;
- loop {
- let n = decoder.write(&compressed[consumed_bytes..]).unwrap();
- if n == 0 {
- break;
- }
- consumed_bytes += n;
- }
- writer = decoder.finish().unwrap();
- let actual = String::from_utf8(writer).expect("String parsing error");
- assert_eq!(actual, STR);
- assert_eq!(&compressed[consumed_bytes..], b"x");
- }
-}
diff --git a/vendor/flate2/src/lib.rs b/vendor/flate2/src/lib.rs
deleted file mode 100644
index 8c000b0..0000000
--- a/vendor/flate2/src/lib.rs
+++ /dev/null
@@ -1,234 +0,0 @@
-//! A DEFLATE-based stream compression/decompression library
-//!
-//! This library provides support for compression and decompression of
-//! DEFLATE-based streams:
-//!
-//! * the DEFLATE format itself
-//! * the zlib format
-//! * gzip
-//!
-//! These three formats are all closely related and largely only differ in their
-//! headers/footers. This crate has three types in each submodule for dealing
-//! with these three formats.
-//!
-//! # Implementation
-//!
-//! In addition to supporting three formats, this crate supports several different
-//! backends, controlled through this crate's features:
-//!
-//! * `default`, or `rust_backend` - this implementation uses the `miniz_oxide`
-//! crate which is a port of `miniz.c` (below) to Rust. This feature does not
-//! require a C compiler and only requires Rust code.
-//!
-//! * `zlib` - this feature will enable linking against the `libz` library, typically found on most
-//! Linux systems by default. If the library isn't found to already be on the system it will be
-//! compiled from source (this is a C library).
-//!
-//! There's various tradeoffs associated with each implementation, but in general you probably
-//! won't have to tweak the defaults. The default choice is selected to avoid the need for a C
-//! compiler at build time. `zlib-ng-compat` is useful if you're using zlib for compatibility but
-//! want performance via zlib-ng's zlib-compat mode. `zlib` is useful if something else in your
-//! dependencies links the original zlib so you cannot use zlib-ng-compat. The compression ratios
-//! and performance of each of these feature should be roughly comparable, but you'll likely want
-//! to run your own tests if you're curious about the performance.
-//!
-//! # Organization
-//!
-//! This crate consists mainly of three modules, [`read`], [`write`], and
-//! [`bufread`]. Each module contains a number of types used to encode and
-//! decode various streams of data.
-//!
-//! All types in the [`write`] module work on instances of [`Write`][write],
-//! whereas all types in the [`read`] module work on instances of
-//! [`Read`][read] and [`bufread`] works with [`BufRead`][bufread]. If you
-//! are decoding directly from a `&[u8]`, use the [`bufread`] types.
-//!
-//! ```
-//! use flate2::write::GzEncoder;
-//! use flate2::Compression;
-//! use std::io;
-//! use std::io::prelude::*;
-//!
-//! # fn main() { let _ = run(); }
-//! # fn run() -> io::Result<()> {
-//! let mut encoder = GzEncoder::new(Vec::new(), Compression::default());
-//! encoder.write_all(b"Example")?;
-//! # Ok(())
-//! # }
-//! ```
-//!
-//!
-//! Other various types are provided at the top-level of the crate for
-//! management and dealing with encoders/decoders. Also note that types which
-//! operate over a specific trait often implement the mirroring trait as well.
-//! For example a `flate2::read::DeflateDecoder<T>` *also* implements the
-//! `Write` trait if `T: Write`. That is, the "dual trait" is forwarded directly
-//! to the underlying object if available.
-//!
-//! # About multi-member Gzip files
-//!
-//! While most `gzip` files one encounters will have a single *member* that can be read
-//! with the [`GzDecoder`], there may be some files which have multiple members.
-//!
-//! A [`GzDecoder`] will only read the first member of gzip data, which may unexpectedly
-//! provide partial results when a multi-member gzip file is encountered. `GzDecoder` is appropriate
-//! for data that is designed to be read as single members from a multi-member file. `bufread::GzDecoder`
-//! and `write::GzDecoder` also allow non-gzip data following gzip data to be handled.
-//!
-//! The [`MultiGzDecoder`] on the other hand will decode all members of a `gzip` file
-//! into one consecutive stream of bytes, which hides the underlying *members* entirely.
-//! If a file contains contains non-gzip data after the gzip data, MultiGzDecoder will
-//! emit an error after decoding the gzip data. This behavior matches the `gzip`,
-//! `gunzip`, and `zcat` command line tools.
-//!
-//! [`read`]: read/index.html
-//! [`bufread`]: bufread/index.html
-//! [`write`]: write/index.html
-//! [read]: https://doc.rust-lang.org/std/io/trait.Read.html
-//! [write]: https://doc.rust-lang.org/std/io/trait.Write.html
-//! [bufread]: https://doc.rust-lang.org/std/io/trait.BufRead.html
-//! [`GzDecoder`]: read/struct.GzDecoder.html
-//! [`MultiGzDecoder`]: read/struct.MultiGzDecoder.html
-#![doc(html_root_url = "https://docs.rs/flate2/0.2")]
-#![deny(missing_docs)]
-#![deny(missing_debug_implementations)]
-#![allow(trivial_numeric_casts)]
-#![cfg_attr(test, deny(warnings))]
-#![cfg_attr(docsrs, feature(doc_auto_cfg))]
-
-#[cfg(not(feature = "any_impl",))]
-compile_error!("You need to choose a zlib backend");
-
-pub use crate::crc::{Crc, CrcReader, CrcWriter};
-pub use crate::gz::GzBuilder;
-pub use crate::gz::GzHeader;
-pub use crate::mem::{Compress, CompressError, Decompress, DecompressError, Status};
-pub use crate::mem::{FlushCompress, FlushDecompress};
-
-mod bufreader;
-mod crc;
-mod deflate;
-mod ffi;
-mod gz;
-mod mem;
-mod zio;
-mod zlib;
-
-/// Types which operate over [`Read`] streams, both encoders and decoders for
-/// various formats.
-///
-/// Note that the `read` decoder types may read past the end of the compressed
-/// data while decoding. If the caller requires subsequent reads to start
-/// immediately following the compressed data wrap the `Read` type in a
-/// [`BufReader`] and use the `BufReader` with the equivalent decoder from the
-/// `bufread` module and also for the subsequent reads.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-/// [`BufReader`]: https://doc.rust-lang.org/std/io/struct.BufReader.html
-pub mod read {
- pub use crate::deflate::read::DeflateDecoder;
- pub use crate::deflate::read::DeflateEncoder;
- pub use crate::gz::read::GzDecoder;
- pub use crate::gz::read::GzEncoder;
- pub use crate::gz::read::MultiGzDecoder;
- pub use crate::zlib::read::ZlibDecoder;
- pub use crate::zlib::read::ZlibEncoder;
-}
-
-/// Types which operate over [`Write`] streams, both encoders and decoders for
-/// various formats.
-///
-/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
-pub mod write {
- pub use crate::deflate::write::DeflateDecoder;
- pub use crate::deflate::write::DeflateEncoder;
- pub use crate::gz::write::GzDecoder;
- pub use crate::gz::write::GzEncoder;
- pub use crate::gz::write::MultiGzDecoder;
- pub use crate::zlib::write::ZlibDecoder;
- pub use crate::zlib::write::ZlibEncoder;
-}
-
-/// Types which operate over [`BufRead`] streams, both encoders and decoders for
-/// various formats.
-///
-/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
-pub mod bufread {
- pub use crate::deflate::bufread::DeflateDecoder;
- pub use crate::deflate::bufread::DeflateEncoder;
- pub use crate::gz::bufread::GzDecoder;
- pub use crate::gz::bufread::GzEncoder;
- pub use crate::gz::bufread::MultiGzDecoder;
- pub use crate::zlib::bufread::ZlibDecoder;
- pub use crate::zlib::bufread::ZlibEncoder;
-}
-
-fn _assert_send_sync() {
- fn _assert_send_sync<T: Send + Sync>() {}
-
- _assert_send_sync::<read::DeflateEncoder<&[u8]>>();
- _assert_send_sync::<read::DeflateDecoder<&[u8]>>();
- _assert_send_sync::<read::ZlibEncoder<&[u8]>>();
- _assert_send_sync::<read::ZlibDecoder<&[u8]>>();
- _assert_send_sync::<read::GzEncoder<&[u8]>>();
- _assert_send_sync::<read::GzDecoder<&[u8]>>();
- _assert_send_sync::<read::MultiGzDecoder<&[u8]>>();
- _assert_send_sync::<write::DeflateEncoder<Vec<u8>>>();
- _assert_send_sync::<write::DeflateDecoder<Vec<u8>>>();
- _assert_send_sync::<write::ZlibEncoder<Vec<u8>>>();
- _assert_send_sync::<write::ZlibDecoder<Vec<u8>>>();
- _assert_send_sync::<write::GzEncoder<Vec<u8>>>();
- _assert_send_sync::<write::GzDecoder<Vec<u8>>>();
-}
-
-/// When compressing data, the compression level can be specified by a value in
-/// this struct.
-#[derive(Copy, Clone, PartialEq, Eq, Debug)]
-pub struct Compression(u32);
-
-impl Compression {
- /// Creates a new description of the compression level with an explicitly
- /// specified integer.
- ///
- /// The integer here is typically on a scale of 0-9 where 0 means "no
- /// compression" and 9 means "take as long as you'd like".
- pub const fn new(level: u32) -> Compression {
- Compression(level)
- }
-
- /// No compression is to be performed, this may actually inflate data
- /// slightly when encoding.
- pub const fn none() -> Compression {
- Compression(0)
- }
-
- /// Optimize for the best speed of encoding.
- pub const fn fast() -> Compression {
- Compression(1)
- }
-
- /// Optimize for the size of data being encoded.
- pub const fn best() -> Compression {
- Compression(9)
- }
-
- /// Returns an integer representing the compression level, typically on a
- /// scale of 0-9
- pub fn level(&self) -> u32 {
- self.0
- }
-}
-
-impl Default for Compression {
- fn default() -> Compression {
- Compression(6)
- }
-}
-
-#[cfg(test)]
-fn random_bytes() -> impl Iterator<Item = u8> {
- use rand::Rng;
- use std::iter;
-
- iter::repeat(()).map(|_| rand::thread_rng().gen())
-}
diff --git a/vendor/flate2/src/mem.rs b/vendor/flate2/src/mem.rs
deleted file mode 100644
index d4a5091..0000000
--- a/vendor/flate2/src/mem.rs
+++ /dev/null
@@ -1,772 +0,0 @@
-use std::error::Error;
-use std::fmt;
-use std::io;
-
-use crate::ffi::{self, Backend, Deflate, DeflateBackend, ErrorMessage, Inflate, InflateBackend};
-use crate::Compression;
-
-/// Raw in-memory compression stream for blocks of data.
-///
-/// This type is the building block for the I/O streams in the rest of this
-/// crate. It requires more management than the [`Read`]/[`Write`] API but is
-/// maximally flexible in terms of accepting input from any source and being
-/// able to produce output to any memory location.
-///
-/// It is recommended to use the I/O stream adaptors over this type as they're
-/// easier to use.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
-#[derive(Debug)]
-pub struct Compress {
- inner: Deflate,
-}
-
-/// Raw in-memory decompression stream for blocks of data.
-///
-/// This type is the building block for the I/O streams in the rest of this
-/// crate. It requires more management than the [`Read`]/[`Write`] API but is
-/// maximally flexible in terms of accepting input from any source and being
-/// able to produce output to any memory location.
-///
-/// It is recommended to use the I/O stream adaptors over this type as they're
-/// easier to use.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
-#[derive(Debug)]
-pub struct Decompress {
- inner: Inflate,
-}
-
-/// Values which indicate the form of flushing to be used when compressing
-/// in-memory data.
-#[derive(Copy, Clone, PartialEq, Eq, Debug)]
-#[non_exhaustive]
-pub enum FlushCompress {
- /// A typical parameter for passing to compression/decompression functions,
- /// this indicates that the underlying stream to decide how much data to
- /// accumulate before producing output in order to maximize compression.
- None = ffi::MZ_NO_FLUSH as isize,
-
- /// All pending output is flushed to the output buffer and the output is
- /// aligned on a byte boundary so that the decompressor can get all input
- /// data available so far.
- ///
- /// Flushing may degrade compression for some compression algorithms and so
- /// it should only be used when necessary. This will complete the current
- /// deflate block and follow it with an empty stored block.
- Sync = ffi::MZ_SYNC_FLUSH as isize,
-
- /// All pending output is flushed to the output buffer, but the output is
- /// not aligned to a byte boundary.
- ///
- /// All of the input data so far will be available to the decompressor (as
- /// with `Flush::Sync`. This completes the current deflate block and follows
- /// it with an empty fixed codes block that is 10 bites long, and it assures
- /// that enough bytes are output in order for the decompressor to finish the
- /// block before the empty fixed code block.
- Partial = ffi::MZ_PARTIAL_FLUSH as isize,
-
- /// All output is flushed as with `Flush::Sync` and the compression state is
- /// reset so decompression can restart from this point if previous
- /// compressed data has been damaged or if random access is desired.
- ///
- /// Using this option too often can seriously degrade compression.
- Full = ffi::MZ_FULL_FLUSH as isize,
-
- /// Pending input is processed and pending output is flushed.
- ///
- /// The return value may indicate that the stream is not yet done and more
- /// data has yet to be processed.
- Finish = ffi::MZ_FINISH as isize,
-}
-
-/// Values which indicate the form of flushing to be used when
-/// decompressing in-memory data.
-#[derive(Copy, Clone, PartialEq, Eq, Debug)]
-#[non_exhaustive]
-pub enum FlushDecompress {
- /// A typical parameter for passing to compression/decompression functions,
- /// this indicates that the underlying stream to decide how much data to
- /// accumulate before producing output in order to maximize compression.
- None = ffi::MZ_NO_FLUSH as isize,
-
- /// All pending output is flushed to the output buffer and the output is
- /// aligned on a byte boundary so that the decompressor can get all input
- /// data available so far.
- ///
- /// Flushing may degrade compression for some compression algorithms and so
- /// it should only be used when necessary. This will complete the current
- /// deflate block and follow it with an empty stored block.
- Sync = ffi::MZ_SYNC_FLUSH as isize,
-
- /// Pending input is processed and pending output is flushed.
- ///
- /// The return value may indicate that the stream is not yet done and more
- /// data has yet to be processed.
- Finish = ffi::MZ_FINISH as isize,
-}
-
-/// The inner state for an error when decompressing
-#[derive(Debug)]
-pub(crate) enum DecompressErrorInner {
- General { msg: ErrorMessage },
- NeedsDictionary(u32),
-}
-
-/// Error returned when a decompression object finds that the input stream of
-/// bytes was not a valid input stream of bytes.
-#[derive(Debug)]
-pub struct DecompressError(pub(crate) DecompressErrorInner);
-
-impl DecompressError {
- /// Indicates whether decompression failed due to requiring a dictionary.
- ///
- /// The resulting integer is the Adler-32 checksum of the dictionary
- /// required.
- pub fn needs_dictionary(&self) -> Option<u32> {
- match self.0 {
- DecompressErrorInner::NeedsDictionary(adler) => Some(adler),
- _ => None,
- }
- }
-}
-
-#[inline]
-pub(crate) fn decompress_failed<T>(msg: ErrorMessage) -> Result<T, DecompressError> {
- Err(DecompressError(DecompressErrorInner::General { msg }))
-}
-
-#[inline]
-pub(crate) fn decompress_need_dict<T>(adler: u32) -> Result<T, DecompressError> {
- Err(DecompressError(DecompressErrorInner::NeedsDictionary(
- adler,
- )))
-}
-
-/// Error returned when a compression object is used incorrectly or otherwise
-/// generates an error.
-#[derive(Debug)]
-pub struct CompressError {
- pub(crate) msg: ErrorMessage,
-}
-
-#[inline]
-pub(crate) fn compress_failed<T>(msg: ErrorMessage) -> Result<T, CompressError> {
- Err(CompressError { msg })
-}
-
-/// Possible status results of compressing some data or successfully
-/// decompressing a block of data.
-#[derive(Copy, Clone, PartialEq, Eq, Debug)]
-pub enum Status {
- /// Indicates success.
- ///
- /// Means that more input may be needed but isn't available
- /// and/or there's more output to be written but the output buffer is full.
- Ok,
-
- /// Indicates that forward progress is not possible due to input or output
- /// buffers being empty.
- ///
- /// For compression it means the input buffer needs some more data or the
- /// output buffer needs to be freed up before trying again.
- ///
- /// For decompression this means that more input is needed to continue or
- /// the output buffer isn't large enough to contain the result. The function
- /// can be called again after fixing both.
- BufError,
-
- /// Indicates that all input has been consumed and all output bytes have
- /// been written. Decompression/compression should not be called again.
- ///
- /// For decompression with zlib streams the adler-32 of the decompressed
- /// data has also been verified.
- StreamEnd,
-}
-
-impl Compress {
- /// Creates a new object ready for compressing data that it's given.
- ///
- /// The `level` argument here indicates what level of compression is going
- /// to be performed, and the `zlib_header` argument indicates whether the
- /// output data should have a zlib header or not.
- pub fn new(level: Compression, zlib_header: bool) -> Compress {
- Compress {
- inner: Deflate::make(level, zlib_header, ffi::MZ_DEFAULT_WINDOW_BITS as u8),
- }
- }
-
- /// Creates a new object ready for compressing data that it's given.
- ///
- /// The `level` argument here indicates what level of compression is going
- /// to be performed, and the `zlib_header` argument indicates whether the
- /// output data should have a zlib header or not. The `window_bits` parameter
- /// indicates the base-2 logarithm of the sliding window size and must be
- /// between 9 and 15.
- ///
- /// # Panics
- ///
- /// If `window_bits` does not fall into the range 9 ..= 15,
- /// `new_with_window_bits` will panic.
- #[cfg(feature = "any_zlib")]
- pub fn new_with_window_bits(
- level: Compression,
- zlib_header: bool,
- window_bits: u8,
- ) -> Compress {
- assert!(
- window_bits > 8 && window_bits < 16,
- "window_bits must be within 9 ..= 15"
- );
- Compress {
- inner: Deflate::make(level, zlib_header, window_bits),
- }
- }
-
- /// Creates a new object ready for compressing data that it's given.
- ///
- /// The `level` argument here indicates what level of compression is going
- /// to be performed.
- ///
- /// The Compress object produced by this constructor outputs gzip headers
- /// for the compressed data.
- ///
- /// # Panics
- ///
- /// If `window_bits` does not fall into the range 9 ..= 15,
- /// `new_with_window_bits` will panic.
- #[cfg(feature = "any_zlib")]
- pub fn new_gzip(level: Compression, window_bits: u8) -> Compress {
- assert!(
- window_bits > 8 && window_bits < 16,
- "window_bits must be within 9 ..= 15"
- );
- Compress {
- inner: Deflate::make(level, true, window_bits + 16),
- }
- }
-
- /// Returns the total number of input bytes which have been processed by
- /// this compression object.
- pub fn total_in(&self) -> u64 {
- self.inner.total_in()
- }
-
- /// Returns the total number of output bytes which have been produced by
- /// this compression object.
- pub fn total_out(&self) -> u64 {
- self.inner.total_out()
- }
-
- /// Specifies the compression dictionary to use.
- ///
- /// Returns the Adler-32 checksum of the dictionary.
- #[cfg(feature = "any_zlib")]
- pub fn set_dictionary(&mut self, dictionary: &[u8]) -> Result<u32, CompressError> {
- let stream = &mut *self.inner.inner.stream_wrapper;
- stream.msg = std::ptr::null_mut();
- let rc = unsafe {
- assert!(dictionary.len() < ffi::uInt::MAX as usize);
- ffi::deflateSetDictionary(stream, dictionary.as_ptr(), dictionary.len() as ffi::uInt)
- };
-
- match rc {
- ffi::MZ_STREAM_ERROR => compress_failed(self.inner.inner.msg()),
- ffi::MZ_OK => Ok(stream.adler as u32),
- c => panic!("unknown return code: {}", c),
- }
- }
-
- /// Quickly resets this compressor without having to reallocate anything.
- ///
- /// This is equivalent to dropping this object and then creating a new one.
- pub fn reset(&mut self) {
- self.inner.reset();
- }
-
- /// Dynamically updates the compression level.
- ///
- /// This can be used to switch between compression levels for different
- /// kinds of data, or it can be used in conjunction with a call to reset
- /// to reuse the compressor.
- ///
- /// This may return an error if there wasn't enough output space to complete
- /// the compression of the available input data before changing the
- /// compression level. Flushing the stream before calling this method
- /// ensures that the function will succeed on the first call.
- #[cfg(feature = "any_zlib")]
- pub fn set_level(&mut self, level: Compression) -> Result<(), CompressError> {
- use std::os::raw::c_int;
- let stream = &mut *self.inner.inner.stream_wrapper;
- stream.msg = std::ptr::null_mut();
-
- let rc = unsafe { ffi::deflateParams(stream, level.0 as c_int, ffi::MZ_DEFAULT_STRATEGY) };
-
- match rc {
- ffi::MZ_OK => Ok(()),
- ffi::MZ_BUF_ERROR => compress_failed(self.inner.inner.msg()),
- c => panic!("unknown return code: {}", c),
- }
- }
-
- /// Compresses the input data into the output, consuming only as much
- /// input as needed and writing as much output as possible.
- ///
- /// The flush option can be any of the available `FlushCompress` parameters.
- ///
- /// To learn how much data was consumed or how much output was produced, use
- /// the `total_in` and `total_out` functions before/after this is called.
- pub fn compress(
- &mut self,
- input: &[u8],
- output: &mut [u8],
- flush: FlushCompress,
- ) -> Result<Status, CompressError> {
- self.inner.compress(input, output, flush)
- }
-
- /// Compresses the input data into the extra space of the output, consuming
- /// only as much input as needed and writing as much output as possible.
- ///
- /// This function has the same semantics as `compress`, except that the
- /// length of `vec` is managed by this function. This will not reallocate
- /// the vector provided or attempt to grow it, so space for the output must
- /// be reserved in the output vector by the caller before calling this
- /// function.
- pub fn compress_vec(
- &mut self,
- input: &[u8],
- output: &mut Vec<u8>,
- flush: FlushCompress,
- ) -> Result<Status, CompressError> {
- write_to_spare_capacity_of_vec(output, |out| {
- let before = self.total_out();
- let ret = self.compress(input, out, flush);
- let bytes_written = self.total_out() - before;
- (bytes_written as usize, ret)
- })
- }
-}
-
-impl Decompress {
- /// Creates a new object ready for decompressing data that it's given.
- ///
- /// The `zlib_header` argument indicates whether the input data is expected
- /// to have a zlib header or not.
- pub fn new(zlib_header: bool) -> Decompress {
- Decompress {
- inner: Inflate::make(zlib_header, ffi::MZ_DEFAULT_WINDOW_BITS as u8),
- }
- }
-
- /// Creates a new object ready for decompressing data that it's given.
- ///
- /// The `zlib_header` argument indicates whether the input data is expected
- /// to have a zlib header or not. The `window_bits` parameter indicates the
- /// base-2 logarithm of the sliding window size and must be between 9 and 15.
- ///
- /// # Panics
- ///
- /// If `window_bits` does not fall into the range 9 ..= 15,
- /// `new_with_window_bits` will panic.
- #[cfg(feature = "any_zlib")]
- pub fn new_with_window_bits(zlib_header: bool, window_bits: u8) -> Decompress {
- assert!(
- window_bits > 8 && window_bits < 16,
- "window_bits must be within 9 ..= 15"
- );
- Decompress {
- inner: Inflate::make(zlib_header, window_bits),
- }
- }
-
- /// Creates a new object ready for decompressing data that it's given.
- ///
- /// The Decompress object produced by this constructor expects gzip headers
- /// for the compressed data.
- ///
- /// # Panics
- ///
- /// If `window_bits` does not fall into the range 9 ..= 15,
- /// `new_with_window_bits` will panic.
- #[cfg(feature = "any_zlib")]
- pub fn new_gzip(window_bits: u8) -> Decompress {
- assert!(
- window_bits > 8 && window_bits < 16,
- "window_bits must be within 9 ..= 15"
- );
- Decompress {
- inner: Inflate::make(true, window_bits + 16),
- }
- }
-
- /// Returns the total number of input bytes which have been processed by
- /// this decompression object.
- pub fn total_in(&self) -> u64 {
- self.inner.total_in()
- }
-
- /// Returns the total number of output bytes which have been produced by
- /// this decompression object.
- pub fn total_out(&self) -> u64 {
- self.inner.total_out()
- }
-
- /// Decompresses the input data into the output, consuming only as much
- /// input as needed and writing as much output as possible.
- ///
- /// The flush option can be any of the available `FlushDecompress` parameters.
- ///
- /// If the first call passes `FlushDecompress::Finish` it is assumed that
- /// the input and output buffers are both sized large enough to decompress
- /// the entire stream in a single call.
- ///
- /// A flush value of `FlushDecompress::Finish` indicates that there are no
- /// more source bytes available beside what's already in the input buffer,
- /// and the output buffer is large enough to hold the rest of the
- /// decompressed data.
- ///
- /// To learn how much data was consumed or how much output was produced, use
- /// the `total_in` and `total_out` functions before/after this is called.
- ///
- /// # Errors
- ///
- /// If the input data to this instance of `Decompress` is not a valid
- /// zlib/deflate stream then this function may return an instance of
- /// `DecompressError` to indicate that the stream of input bytes is corrupted.
- pub fn decompress(
- &mut self,
- input: &[u8],
- output: &mut [u8],
- flush: FlushDecompress,
- ) -> Result<Status, DecompressError> {
- self.inner.decompress(input, output, flush)
- }
-
- /// Decompresses the input data into the extra space in the output vector
- /// specified by `output`.
- ///
- /// This function has the same semantics as `decompress`, except that the
- /// length of `vec` is managed by this function. This will not reallocate
- /// the vector provided or attempt to grow it, so space for the output must
- /// be reserved in the output vector by the caller before calling this
- /// function.
- ///
- /// # Errors
- ///
- /// If the input data to this instance of `Decompress` is not a valid
- /// zlib/deflate stream then this function may return an instance of
- /// `DecompressError` to indicate that the stream of input bytes is corrupted.
- pub fn decompress_vec(
- &mut self,
- input: &[u8],
- output: &mut Vec<u8>,
- flush: FlushDecompress,
- ) -> Result<Status, DecompressError> {
- write_to_spare_capacity_of_vec(output, |out| {
- let before = self.total_out();
- let ret = self.decompress(input, out, flush);
- let bytes_written = self.total_out() - before;
- (bytes_written as usize, ret)
- })
- }
-
- /// Specifies the decompression dictionary to use.
- #[cfg(feature = "any_zlib")]
- pub fn set_dictionary(&mut self, dictionary: &[u8]) -> Result<u32, DecompressError> {
- let stream = &mut *self.inner.inner.stream_wrapper;
- stream.msg = std::ptr::null_mut();
- let rc = unsafe {
- assert!(dictionary.len() < ffi::uInt::MAX as usize);
- ffi::inflateSetDictionary(stream, dictionary.as_ptr(), dictionary.len() as ffi::uInt)
- };
-
- match rc {
- ffi::MZ_STREAM_ERROR => decompress_failed(self.inner.inner.msg()),
- ffi::MZ_DATA_ERROR => decompress_need_dict(stream.adler as u32),
- ffi::MZ_OK => Ok(stream.adler as u32),
- c => panic!("unknown return code: {}", c),
- }
- }
-
- /// Performs the equivalent of replacing this decompression state with a
- /// freshly allocated copy.
- ///
- /// This function may not allocate memory, though, and attempts to reuse any
- /// previously existing resources.
- ///
- /// The argument provided here indicates whether the reset state will
- /// attempt to decode a zlib header first or not.
- pub fn reset(&mut self, zlib_header: bool) {
- self.inner.reset(zlib_header);
- }
-}
-
-impl Error for DecompressError {}
-
-impl DecompressError {
- /// Retrieve the implementation's message about why the operation failed, if one exists.
- pub fn message(&self) -> Option<&str> {
- match &self.0 {
- DecompressErrorInner::General { msg } => msg.get(),
- _ => None,
- }
- }
-}
-
-impl From<DecompressError> for io::Error {
- fn from(data: DecompressError) -> io::Error {
- io::Error::new(io::ErrorKind::Other, data)
- }
-}
-
-impl fmt::Display for DecompressError {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- let msg = match &self.0 {
- DecompressErrorInner::General { msg } => msg.get(),
- DecompressErrorInner::NeedsDictionary { .. } => Some("requires a dictionary"),
- };
- match msg {
- Some(msg) => write!(f, "deflate decompression error: {}", msg),
- None => write!(f, "deflate decompression error"),
- }
- }
-}
-
-impl Error for CompressError {}
-
-impl CompressError {
- /// Retrieve the implementation's message about why the operation failed, if one exists.
- pub fn message(&self) -> Option<&str> {
- self.msg.get()
- }
-}
-
-impl From<CompressError> for io::Error {
- fn from(data: CompressError) -> io::Error {
- io::Error::new(io::ErrorKind::Other, data)
- }
-}
-
-impl fmt::Display for CompressError {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- match self.msg.get() {
- Some(msg) => write!(f, "deflate compression error: {}", msg),
- None => write!(f, "deflate compression error"),
- }
- }
-}
-
-/// Allows `writer` to write data into the spare capacity of the `output` vector.
-/// This will not reallocate the vector provided or attempt to grow it, so space
-/// for the `output` must be reserved by the caller before calling this
-/// function.
-///
-/// `writer` needs to return the number of bytes written (and can also return
-/// another arbitrary return value).
-fn write_to_spare_capacity_of_vec<T>(
- output: &mut Vec<u8>,
- writer: impl FnOnce(&mut [u8]) -> (usize, T),
-) -> T {
- let cap = output.capacity();
- let len = output.len();
-
- output.resize(output.capacity(), 0);
- let (bytes_written, ret) = writer(&mut output[len..]);
-
- let new_len = core::cmp::min(len + bytes_written, cap); // Sanitizes `bytes_written`.
- output.resize(new_len, 0 /* unused */);
-
- ret
-}
-
-#[cfg(test)]
-mod tests {
- use std::io::Write;
-
- use crate::write;
- use crate::{Compression, Decompress, FlushDecompress};
-
- #[cfg(feature = "any_zlib")]
- use crate::{Compress, FlushCompress};
-
- #[test]
- fn issue51() {
- let data = vec![
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xb3, 0xc9, 0x28, 0xc9,
- 0xcd, 0xb1, 0xe3, 0xe5, 0xb2, 0xc9, 0x48, 0x4d, 0x4c, 0xb1, 0xb3, 0x29, 0xc9, 0x2c,
- 0xc9, 0x49, 0xb5, 0x33, 0x31, 0x30, 0x51, 0xf0, 0xcb, 0x2f, 0x51, 0x70, 0xcb, 0x2f,
- 0xcd, 0x4b, 0xb1, 0xd1, 0x87, 0x08, 0xda, 0xe8, 0x83, 0x95, 0x00, 0x95, 0x26, 0xe5,
- 0xa7, 0x54, 0x2a, 0x24, 0xa5, 0x27, 0xe7, 0xe7, 0xe4, 0x17, 0xd9, 0x2a, 0x95, 0x67,
- 0x64, 0x96, 0xa4, 0x2a, 0x81, 0x8c, 0x48, 0x4e, 0xcd, 0x2b, 0x49, 0x2d, 0xb2, 0xb3,
- 0xc9, 0x30, 0x44, 0x37, 0x01, 0x28, 0x62, 0xa3, 0x0f, 0x95, 0x06, 0xd9, 0x05, 0x54,
- 0x04, 0xe5, 0xe5, 0xa5, 0x67, 0xe6, 0x55, 0xe8, 0x1b, 0xea, 0x99, 0xe9, 0x19, 0x21,
- 0xab, 0xd0, 0x07, 0xd9, 0x01, 0x32, 0x53, 0x1f, 0xea, 0x3e, 0x00, 0x94, 0x85, 0xeb,
- 0xe4, 0xa8, 0x00, 0x00, 0x00,
- ];
-
- let mut decoded = Vec::with_capacity(data.len() * 2);
-
- let mut d = Decompress::new(false);
- // decompressed whole deflate stream
- assert!(d
- .decompress_vec(&data[10..], &mut decoded, FlushDecompress::Finish)
- .is_ok());
-
- // decompress data that has nothing to do with the deflate stream (this
- // used to panic)
- drop(d.decompress_vec(&[0], &mut decoded, FlushDecompress::None));
- }
-
- #[test]
- fn reset() {
- let string = "hello world".as_bytes();
- let mut zlib = Vec::new();
- let mut deflate = Vec::new();
-
- let comp = Compression::default();
- write::ZlibEncoder::new(&mut zlib, comp)
- .write_all(string)
- .unwrap();
- write::DeflateEncoder::new(&mut deflate, comp)
- .write_all(string)
- .unwrap();
-
- let mut dst = [0; 1024];
- let mut decoder = Decompress::new(true);
- decoder
- .decompress(&zlib, &mut dst, FlushDecompress::Finish)
- .unwrap();
- assert_eq!(decoder.total_out(), string.len() as u64);
- assert!(dst.starts_with(string));
-
- decoder.reset(false);
- decoder
- .decompress(&deflate, &mut dst, FlushDecompress::Finish)
- .unwrap();
- assert_eq!(decoder.total_out(), string.len() as u64);
- assert!(dst.starts_with(string));
- }
-
- #[cfg(feature = "any_zlib")]
- #[test]
- fn set_dictionary_with_zlib_header() {
- let string = "hello, hello!".as_bytes();
- let dictionary = "hello".as_bytes();
-
- let mut encoded = Vec::with_capacity(1024);
-
- let mut encoder = Compress::new(Compression::default(), true);
-
- let dictionary_adler = encoder.set_dictionary(&dictionary).unwrap();
-
- encoder
- .compress_vec(string, &mut encoded, FlushCompress::Finish)
- .unwrap();
-
- assert_eq!(encoder.total_in(), string.len() as u64);
- assert_eq!(encoder.total_out(), encoded.len() as u64);
-
- let mut decoder = Decompress::new(true);
- let mut decoded = [0; 1024];
- let decompress_error = decoder
- .decompress(&encoded, &mut decoded, FlushDecompress::Finish)
- .expect_err("decompression should fail due to requiring a dictionary");
-
- let required_adler = decompress_error.needs_dictionary()
- .expect("the first call to decompress should indicate a dictionary is required along with the required Adler-32 checksum");
-
- assert_eq!(required_adler, dictionary_adler,
- "the Adler-32 checksum should match the value when the dictionary was set on the compressor");
-
- let actual_adler = decoder.set_dictionary(&dictionary).unwrap();
-
- assert_eq!(required_adler, actual_adler);
-
- // Decompress the rest of the input to the remainder of the output buffer
- let total_in = decoder.total_in();
- let total_out = decoder.total_out();
-
- let decompress_result = decoder.decompress(
- &encoded[total_in as usize..],
- &mut decoded[total_out as usize..],
- FlushDecompress::Finish,
- );
- assert!(decompress_result.is_ok());
-
- assert_eq!(&decoded[..decoder.total_out() as usize], string);
- }
-
- #[cfg(feature = "any_zlib")]
- #[test]
- fn set_dictionary_raw() {
- let string = "hello, hello!".as_bytes();
- let dictionary = "hello".as_bytes();
-
- let mut encoded = Vec::with_capacity(1024);
-
- let mut encoder = Compress::new(Compression::default(), false);
-
- encoder.set_dictionary(&dictionary).unwrap();
-
- encoder
- .compress_vec(string, &mut encoded, FlushCompress::Finish)
- .unwrap();
-
- assert_eq!(encoder.total_in(), string.len() as u64);
- assert_eq!(encoder.total_out(), encoded.len() as u64);
-
- let mut decoder = Decompress::new(false);
-
- decoder.set_dictionary(&dictionary).unwrap();
-
- let mut decoded = [0; 1024];
- let decompress_result = decoder.decompress(&encoded, &mut decoded, FlushDecompress::Finish);
-
- assert!(decompress_result.is_ok());
-
- assert_eq!(&decoded[..decoder.total_out() as usize], string);
- }
-
- #[cfg(feature = "any_zlib")]
- #[test]
- fn test_gzip_flate() {
- let string = "hello, hello!".as_bytes();
-
- let mut encoded = Vec::with_capacity(1024);
-
- let mut encoder = Compress::new_gzip(Compression::default(), 9);
-
- encoder
- .compress_vec(string, &mut encoded, FlushCompress::Finish)
- .unwrap();
-
- assert_eq!(encoder.total_in(), string.len() as u64);
- assert_eq!(encoder.total_out(), encoded.len() as u64);
-
- let mut decoder = Decompress::new_gzip(9);
-
- let mut decoded = [0; 1024];
- decoder
- .decompress(&encoded, &mut decoded, FlushDecompress::Finish)
- .unwrap();
-
- assert_eq!(&decoded[..decoder.total_out() as usize], string);
- }
-
- #[cfg(feature = "any_zlib")]
- #[test]
- fn test_error_message() {
- let mut decoder = Decompress::new(false);
- let mut decoded = [0; 128];
- let garbage = b"xbvxzi";
-
- let err = decoder
- .decompress(&*garbage, &mut decoded, FlushDecompress::Finish)
- .unwrap_err();
-
- assert_eq!(err.message(), Some("invalid stored block lengths"));
- }
-}
diff --git a/vendor/flate2/src/zio.rs b/vendor/flate2/src/zio.rs
deleted file mode 100644
index ea25922..0000000
--- a/vendor/flate2/src/zio.rs
+++ /dev/null
@@ -1,286 +0,0 @@
-use std::io;
-use std::io::prelude::*;
-use std::mem;
-
-use crate::{Compress, Decompress, DecompressError, FlushCompress, FlushDecompress, Status};
-
-#[derive(Debug)]
-pub struct Writer<W: Write, D: Ops> {
- obj: Option<W>,
- pub data: D,
- buf: Vec<u8>,
-}
-
-pub trait Ops {
- type Flush: Flush;
- fn total_in(&self) -> u64;
- fn total_out(&self) -> u64;
- fn run(
- &mut self,
- input: &[u8],
- output: &mut [u8],
- flush: Self::Flush,
- ) -> Result<Status, DecompressError>;
- fn run_vec(
- &mut self,
- input: &[u8],
- output: &mut Vec<u8>,
- flush: Self::Flush,
- ) -> Result<Status, DecompressError>;
-}
-
-impl Ops for Compress {
- type Flush = FlushCompress;
- fn total_in(&self) -> u64 {
- self.total_in()
- }
- fn total_out(&self) -> u64 {
- self.total_out()
- }
- fn run(
- &mut self,
- input: &[u8],
- output: &mut [u8],
- flush: FlushCompress,
- ) -> Result<Status, DecompressError> {
- Ok(self.compress(input, output, flush).unwrap())
- }
- fn run_vec(
- &mut self,
- input: &[u8],
- output: &mut Vec<u8>,
- flush: FlushCompress,
- ) -> Result<Status, DecompressError> {
- Ok(self.compress_vec(input, output, flush).unwrap())
- }
-}
-
-impl Ops for Decompress {
- type Flush = FlushDecompress;
- fn total_in(&self) -> u64 {
- self.total_in()
- }
- fn total_out(&self) -> u64 {
- self.total_out()
- }
- fn run(
- &mut self,
- input: &[u8],
- output: &mut [u8],
- flush: FlushDecompress,
- ) -> Result<Status, DecompressError> {
- self.decompress(input, output, flush)
- }
- fn run_vec(
- &mut self,
- input: &[u8],
- output: &mut Vec<u8>,
- flush: FlushDecompress,
- ) -> Result<Status, DecompressError> {
- self.decompress_vec(input, output, flush)
- }
-}
-
-pub trait Flush {
- fn none() -> Self;
- fn sync() -> Self;
- fn finish() -> Self;
-}
-
-impl Flush for FlushCompress {
- fn none() -> Self {
- FlushCompress::None
- }
-
- fn sync() -> Self {
- FlushCompress::Sync
- }
-
- fn finish() -> Self {
- FlushCompress::Finish
- }
-}
-
-impl Flush for FlushDecompress {
- fn none() -> Self {
- FlushDecompress::None
- }
-
- fn sync() -> Self {
- FlushDecompress::Sync
- }
-
- fn finish() -> Self {
- FlushDecompress::Finish
- }
-}
-
-pub fn read<R, D>(obj: &mut R, data: &mut D, dst: &mut [u8]) -> io::Result<usize>
-where
- R: BufRead,
- D: Ops,
-{
- loop {
- let (read, consumed, ret, eof);
- {
- let input = obj.fill_buf()?;
- eof = input.is_empty();
- let before_out = data.total_out();
- let before_in = data.total_in();
- let flush = if eof {
- D::Flush::finish()
- } else {
- D::Flush::none()
- };
- ret = data.run(input, dst, flush);
- read = (data.total_out() - before_out) as usize;
- consumed = (data.total_in() - before_in) as usize;
- }
- obj.consume(consumed);
-
- match ret {
- // If we haven't ready any data and we haven't hit EOF yet,
- // then we need to keep asking for more data because if we
- // return that 0 bytes of data have been read then it will
- // be interpreted as EOF.
- Ok(Status::Ok | Status::BufError) if read == 0 && !eof && !dst.is_empty() => continue,
- Ok(Status::Ok | Status::BufError | Status::StreamEnd) => return Ok(read),
-
- Err(..) => {
- return Err(io::Error::new(
- io::ErrorKind::InvalidInput,
- "corrupt deflate stream",
- ))
- }
- }
- }
-}
-
-impl<W: Write, D: Ops> Writer<W, D> {
- pub fn new(w: W, d: D) -> Writer<W, D> {
- Writer {
- obj: Some(w),
- data: d,
- buf: Vec::with_capacity(32 * 1024),
- }
- }
-
- pub fn finish(&mut self) -> io::Result<()> {
- loop {
- self.dump()?;
-
- let before = self.data.total_out();
- self.data.run_vec(&[], &mut self.buf, D::Flush::finish())?;
- if before == self.data.total_out() {
- return Ok(());
- }
- }
- }
-
- pub fn replace(&mut self, w: W) -> W {
- self.buf.truncate(0);
- mem::replace(self.get_mut(), w)
- }
-
- pub fn get_ref(&self) -> &W {
- self.obj.as_ref().unwrap()
- }
-
- pub fn get_mut(&mut self) -> &mut W {
- self.obj.as_mut().unwrap()
- }
-
- // Note that this should only be called if the outer object is just about
- // to be consumed!
- //
- // (e.g. an implementation of `into_inner`)
- pub fn take_inner(&mut self) -> W {
- self.obj.take().unwrap()
- }
-
- pub fn is_present(&self) -> bool {
- self.obj.is_some()
- }
-
- // Returns total written bytes and status of underlying codec
- pub(crate) fn write_with_status(&mut self, buf: &[u8]) -> io::Result<(usize, Status)> {
- // miniz isn't guaranteed to actually write any of the buffer provided,
- // it may be in a flushing mode where it's just giving us data before
- // we're actually giving it any data. We don't want to spuriously return
- // `Ok(0)` when possible as it will cause calls to write_all() to fail.
- // As a result we execute this in a loop to ensure that we try our
- // darndest to write the data.
- loop {
- self.dump()?;
-
- let before_in = self.data.total_in();
- let ret = self.data.run_vec(buf, &mut self.buf, D::Flush::none());
- let written = (self.data.total_in() - before_in) as usize;
- let is_stream_end = matches!(ret, Ok(Status::StreamEnd));
-
- if !buf.is_empty() && written == 0 && ret.is_ok() && !is_stream_end {
- continue;
- }
- return match ret {
- Ok(st) => match st {
- Status::Ok | Status::BufError | Status::StreamEnd => Ok((written, st)),
- },
- Err(..) => Err(io::Error::new(
- io::ErrorKind::InvalidInput,
- "corrupt deflate stream",
- )),
- };
- }
- }
-
- fn dump(&mut self) -> io::Result<()> {
- // TODO: should manage this buffer not with `drain` but probably more of
- // a deque-like strategy.
- while !self.buf.is_empty() {
- let n = self.obj.as_mut().unwrap().write(&self.buf)?;
- if n == 0 {
- return Err(io::ErrorKind::WriteZero.into());
- }
- self.buf.drain(..n);
- }
- Ok(())
- }
-}
-
-impl<W: Write, D: Ops> Write for Writer<W, D> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.write_with_status(buf).map(|res| res.0)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.data
- .run_vec(&[], &mut self.buf, D::Flush::sync())
- .unwrap();
-
- // Unfortunately miniz doesn't actually tell us when we're done with
- // pulling out all the data from the internal stream. To remedy this we
- // have to continually ask the stream for more memory until it doesn't
- // give us a chunk of memory the same size as our own internal buffer,
- // at which point we assume it's reached the end.
- loop {
- self.dump()?;
- let before = self.data.total_out();
- self.data
- .run_vec(&[], &mut self.buf, D::Flush::none())
- .unwrap();
- if before == self.data.total_out() {
- break;
- }
- }
-
- self.obj.as_mut().unwrap().flush()
- }
-}
-
-impl<W: Write, D: Ops> Drop for Writer<W, D> {
- fn drop(&mut self) {
- if self.obj.is_some() {
- let _ = self.finish();
- }
- }
-}
diff --git a/vendor/flate2/src/zlib/bufread.rs b/vendor/flate2/src/zlib/bufread.rs
deleted file mode 100644
index 85bbd38..0000000
--- a/vendor/flate2/src/zlib/bufread.rs
+++ /dev/null
@@ -1,253 +0,0 @@
-use std::io;
-use std::io::prelude::*;
-use std::mem;
-
-use crate::zio;
-use crate::{Compress, Decompress};
-
-/// A ZLIB encoder, or compressor.
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// uncompressed data from the underlying [`BufRead`] and provides the compressed data.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use flate2::Compression;
-/// use flate2::bufread::ZlibEncoder;
-/// use std::fs::File;
-/// use std::io::BufReader;
-///
-/// // Use a buffered file to compress contents into a Vec<u8>
-///
-/// # fn open_hello_world() -> std::io::Result<Vec<u8>> {
-/// let f = File::open("examples/hello_world.txt")?;
-/// let b = BufReader::new(f);
-/// let mut z = ZlibEncoder::new(b, Compression::fast());
-/// let mut buffer = Vec::new();
-/// z.read_to_end(&mut buffer)?;
-/// # Ok(buffer)
-/// # }
-/// ```
-#[derive(Debug)]
-pub struct ZlibEncoder<R> {
- obj: R,
- data: Compress,
-}
-
-impl<R: BufRead> ZlibEncoder<R> {
- /// Creates a new encoder which will read uncompressed data from the given
- /// stream and emit the compressed stream.
- pub fn new(r: R, level: crate::Compression) -> ZlibEncoder<R> {
- ZlibEncoder {
- obj: r,
- data: Compress::new(level, true),
- }
- }
-
- /// Creates a new encoder with the given `compression` settings which will
- /// read uncompressed data from the given stream `r` and emit the compressed stream.
- pub fn new_with_compress(r: R, compression: Compress) -> ZlibEncoder<R> {
- ZlibEncoder {
- obj: r,
- data: compression,
- }
- }
-}
-
-pub fn reset_encoder_data<R>(zlib: &mut ZlibEncoder<R>) {
- zlib.data.reset()
-}
-
-impl<R> ZlibEncoder<R> {
- /// Resets the state of this encoder entirely, swapping out the input
- /// stream for another.
- ///
- /// This function will reset the internal state of this encoder and replace
- /// the input stream with the one provided, returning the previous input
- /// stream. Future data read from this encoder will be the compressed
- /// version of `r`'s data.
- pub fn reset(&mut self, r: R) -> R {
- reset_encoder_data(self);
- mem::replace(&mut self.obj, r)
- }
-
- /// Acquires a reference to the underlying reader
- pub fn get_ref(&self) -> &R {
- &self.obj
- }
-
- /// Acquires a mutable reference to the underlying stream
- ///
- /// Note that mutation of the stream may result in surprising results if
- /// this encoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- &mut self.obj
- }
-
- /// Consumes this encoder, returning the underlying reader.
- pub fn into_inner(self) -> R {
- self.obj
- }
-
- /// Returns the number of bytes that have been read into this compressor.
- ///
- /// Note that not all bytes read from the underlying object may be accounted
- /// for, there may still be some active buffering.
- pub fn total_in(&self) -> u64 {
- self.data.total_in()
- }
-
- /// Returns the number of bytes that the compressor has produced.
- ///
- /// Note that not all bytes may have been read yet, some may still be
- /// buffered.
- pub fn total_out(&self) -> u64 {
- self.data.total_out()
- }
-}
-
-impl<R: BufRead> Read for ZlibEncoder<R> {
- fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
- zio::read(&mut self.obj, &mut self.data, buf)
- }
-}
-
-impl<R: BufRead + Write> Write for ZlibEncoder<R> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
-
-/// A ZLIB decoder, or decompressor.
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// compressed data from the underlying [`BufRead`] and provides the uncompressed data.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// # use flate2::Compression;
-/// # use flate2::write::ZlibEncoder;
-/// use flate2::bufread::ZlibDecoder;
-///
-/// # fn main() {
-/// # let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
-/// # e.write_all(b"Hello World").unwrap();
-/// # let bytes = e.finish().unwrap();
-/// # println!("{}", decode_bufreader(bytes).unwrap());
-/// # }
-/// #
-/// // Uncompresses a Zlib Encoded vector of bytes and returns a string or error
-/// // Here &[u8] implements BufRead
-///
-/// fn decode_bufreader(bytes: Vec<u8>) -> io::Result<String> {
-/// let mut z = ZlibDecoder::new(&bytes[..]);
-/// let mut s = String::new();
-/// z.read_to_string(&mut s)?;
-/// Ok(s)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct ZlibDecoder<R> {
- obj: R,
- data: Decompress,
-}
-
-impl<R: BufRead> ZlibDecoder<R> {
- /// Creates a new decoder which will decompress data read from the given
- /// stream.
- pub fn new(r: R) -> ZlibDecoder<R> {
- ZlibDecoder {
- obj: r,
- data: Decompress::new(true),
- }
- }
-
- /// Creates a new decoder which will decompress data read from the given
- /// stream, using the given `decompression` settings.
- pub fn new_with_decompress(r: R, decompression: Decompress) -> ZlibDecoder<R> {
- ZlibDecoder {
- obj: r,
- data: decompression,
- }
- }
-}
-
-pub fn reset_decoder_data<R>(zlib: &mut ZlibDecoder<R>) {
- zlib.data = Decompress::new(true);
-}
-
-impl<R> ZlibDecoder<R> {
- /// Resets the state of this decoder entirely, swapping out the input
- /// stream for another.
- ///
- /// This will reset the internal state of this decoder and replace the
- /// input stream with the one provided, returning the previous input
- /// stream. Future data read from this decoder will be the decompressed
- /// version of `r`'s data.
- pub fn reset(&mut self, r: R) -> R {
- reset_decoder_data(self);
- mem::replace(&mut self.obj, r)
- }
-
- /// Acquires a reference to the underlying stream
- pub fn get_ref(&self) -> &R {
- &self.obj
- }
-
- /// Acquires a mutable reference to the underlying stream
- ///
- /// Note that mutation of the stream may result in surprising results if
- /// this decoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- &mut self.obj
- }
-
- /// Consumes this decoder, returning the underlying reader.
- pub fn into_inner(self) -> R {
- self.obj
- }
-
- /// Returns the number of bytes that the decompressor has consumed.
- ///
- /// Note that this will likely be smaller than what the decompressor
- /// actually read from the underlying stream due to buffering.
- pub fn total_in(&self) -> u64 {
- self.data.total_in()
- }
-
- /// Returns the number of bytes that the decompressor has produced.
- pub fn total_out(&self) -> u64 {
- self.data.total_out()
- }
-}
-
-impl<R: BufRead> Read for ZlibDecoder<R> {
- fn read(&mut self, into: &mut [u8]) -> io::Result<usize> {
- zio::read(&mut self.obj, &mut self.data, into)
- }
-}
-
-impl<R: BufRead + Write> Write for ZlibDecoder<R> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
diff --git a/vendor/flate2/src/zlib/mod.rs b/vendor/flate2/src/zlib/mod.rs
deleted file mode 100644
index 1a293ba..0000000
--- a/vendor/flate2/src/zlib/mod.rs
+++ /dev/null
@@ -1,159 +0,0 @@
-pub mod bufread;
-pub mod read;
-pub mod write;
-
-#[cfg(test)]
-mod tests {
- use std::io;
- use std::io::prelude::*;
-
- use rand::{thread_rng, Rng};
-
- use crate::zlib::{read, write};
- use crate::Compression;
-
- #[test]
- fn roundtrip() {
- let mut real = Vec::new();
- let mut w = write::ZlibEncoder::new(Vec::new(), Compression::default());
- let v = crate::random_bytes().take(1024).collect::<Vec<_>>();
- for _ in 0..200 {
- let to_write = &v[..thread_rng().gen_range(0..v.len())];
- real.extend(to_write.iter().copied());
- w.write_all(to_write).unwrap();
- }
- let result = w.finish().unwrap();
- let mut r = read::ZlibDecoder::new(&result[..]);
- let mut ret = Vec::new();
- r.read_to_end(&mut ret).unwrap();
- assert_eq!(ret, real);
- }
-
- #[test]
- fn drop_writes() {
- let mut data = Vec::new();
- write::ZlibEncoder::new(&mut data, Compression::default())
- .write_all(b"foo")
- .unwrap();
- let mut r = read::ZlibDecoder::new(&data[..]);
- let mut ret = Vec::new();
- r.read_to_end(&mut ret).unwrap();
- assert_eq!(ret, b"foo");
- }
-
- #[test]
- fn total_in() {
- let mut real = Vec::new();
- let mut w = write::ZlibEncoder::new(Vec::new(), Compression::default());
- let v = crate::random_bytes().take(1024).collect::<Vec<_>>();
- for _ in 0..200 {
- let to_write = &v[..thread_rng().gen_range(0..v.len())];
- real.extend(to_write.iter().copied());
- w.write_all(to_write).unwrap();
- }
- let mut result = w.finish().unwrap();
-
- let result_len = result.len();
-
- for _ in 0..200 {
- result.extend(v.iter().copied());
- }
-
- let mut r = read::ZlibDecoder::new(&result[..]);
- let mut ret = Vec::new();
- r.read_to_end(&mut ret).unwrap();
- assert_eq!(ret, real);
- assert_eq!(r.total_in(), result_len as u64);
- }
-
- #[test]
- fn roundtrip2() {
- let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>();
- let mut r = read::ZlibDecoder::new(read::ZlibEncoder::new(&v[..], Compression::default()));
- let mut ret = Vec::new();
- r.read_to_end(&mut ret).unwrap();
- assert_eq!(ret, v);
- }
-
- #[test]
- fn roundtrip3() {
- let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>();
- let mut w =
- write::ZlibEncoder::new(write::ZlibDecoder::new(Vec::new()), Compression::default());
- w.write_all(&v).unwrap();
- let w = w.finish().unwrap().finish().unwrap();
- assert_eq!(w, v);
- }
-
- #[test]
- fn reset_decoder() {
- let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>();
- let mut w = write::ZlibEncoder::new(Vec::new(), Compression::default());
- w.write_all(&v).unwrap();
- let data = w.finish().unwrap();
-
- {
- let (mut a, mut b, mut c) = (Vec::new(), Vec::new(), Vec::new());
- let mut r = read::ZlibDecoder::new(&data[..]);
- r.read_to_end(&mut a).unwrap();
- r.reset(&data);
- r.read_to_end(&mut b).unwrap();
-
- let mut r = read::ZlibDecoder::new(&data[..]);
- r.read_to_end(&mut c).unwrap();
- assert!(a == b && b == c && c == v);
- }
-
- {
- let mut w = write::ZlibDecoder::new(Vec::new());
- w.write_all(&data).unwrap();
- let a = w.reset(Vec::new()).unwrap();
- w.write_all(&data).unwrap();
- let b = w.finish().unwrap();
-
- let mut w = write::ZlibDecoder::new(Vec::new());
- w.write_all(&data).unwrap();
- let c = w.finish().unwrap();
- assert!(a == b && b == c && c == v);
- }
- }
-
- #[test]
- fn bad_input() {
- // regress tests: previously caused a panic on drop
- let mut out: Vec<u8> = Vec::new();
- let data: Vec<u8> = (0..255).cycle().take(1024).collect();
- let mut w = write::ZlibDecoder::new(&mut out);
- match w.write_all(&data[..]) {
- Ok(_) => panic!("Expected an error to be returned!"),
- Err(e) => assert_eq!(e.kind(), io::ErrorKind::InvalidInput),
- }
- }
-
- #[test]
- fn qc_reader() {
- ::quickcheck::quickcheck(test as fn(_) -> _);
-
- fn test(v: Vec<u8>) -> bool {
- let mut r =
- read::ZlibDecoder::new(read::ZlibEncoder::new(&v[..], Compression::default()));
- let mut v2 = Vec::new();
- r.read_to_end(&mut v2).unwrap();
- v == v2
- }
- }
-
- #[test]
- fn qc_writer() {
- ::quickcheck::quickcheck(test as fn(_) -> _);
-
- fn test(v: Vec<u8>) -> bool {
- let mut w = write::ZlibEncoder::new(
- write::ZlibDecoder::new(Vec::new()),
- Compression::default(),
- );
- w.write_all(&v).unwrap();
- v == w.finish().unwrap().finish().unwrap()
- }
- }
-}
diff --git a/vendor/flate2/src/zlib/read.rs b/vendor/flate2/src/zlib/read.rs
deleted file mode 100644
index 3b41ae6..0000000
--- a/vendor/flate2/src/zlib/read.rs
+++ /dev/null
@@ -1,275 +0,0 @@
-use std::io;
-use std::io::prelude::*;
-
-use super::bufread;
-use crate::bufreader::BufReader;
-use crate::Decompress;
-
-/// A ZLIB encoder, or compressor.
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// uncompressed data from the underlying [`Read`] and provides the compressed data.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use flate2::Compression;
-/// use flate2::read::ZlibEncoder;
-/// use std::fs::File;
-///
-/// // Open example file and compress the contents using Read interface
-///
-/// # fn open_hello_world() -> std::io::Result<Vec<u8>> {
-/// let f = File::open("examples/hello_world.txt")?;
-/// let mut z = ZlibEncoder::new(f, Compression::fast());
-/// let mut buffer = Vec::new();
-/// z.read_to_end(&mut buffer)?;
-/// # Ok(buffer)
-/// # }
-/// ```
-#[derive(Debug)]
-pub struct ZlibEncoder<R> {
- inner: bufread::ZlibEncoder<BufReader<R>>,
-}
-
-impl<R: Read> ZlibEncoder<R> {
- /// Creates a new encoder which will read uncompressed data from the given
- /// stream and emit the compressed stream.
- pub fn new(r: R, level: crate::Compression) -> ZlibEncoder<R> {
- ZlibEncoder {
- inner: bufread::ZlibEncoder::new(BufReader::new(r), level),
- }
- }
-
- /// Creates a new encoder with the given `compression` settings which will
- /// read uncompressed data from the given stream `r` and emit the compressed stream.
- pub fn new_with_compress(r: R, compression: crate::Compress) -> ZlibEncoder<R> {
- ZlibEncoder {
- inner: bufread::ZlibEncoder::new_with_compress(BufReader::new(r), compression),
- }
- }
-}
-
-impl<R> ZlibEncoder<R> {
- /// Resets the state of this encoder entirely, swapping out the input
- /// stream for another.
- ///
- /// This function will reset the internal state of this encoder and replace
- /// the input stream with the one provided, returning the previous input
- /// stream. Future data read from this encoder will be the compressed
- /// version of `r`'s data.
- ///
- /// Note that there may be currently buffered data when this function is
- /// called, and in that case the buffered data is discarded.
- pub fn reset(&mut self, r: R) -> R {
- super::bufread::reset_encoder_data(&mut self.inner);
- self.inner.get_mut().reset(r)
- }
-
- /// Acquires a reference to the underlying stream
- pub fn get_ref(&self) -> &R {
- self.inner.get_ref().get_ref()
- }
-
- /// Acquires a mutable reference to the underlying stream
- ///
- /// Note that mutation of the stream may result in surprising results if
- /// this encoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- self.inner.get_mut().get_mut()
- }
-
- /// Consumes this encoder, returning the underlying reader.
- ///
- /// Note that there may be buffered bytes which are not re-acquired as part
- /// of this transition. It's recommended to only call this function after
- /// EOF has been reached.
- pub fn into_inner(self) -> R {
- self.inner.into_inner().into_inner()
- }
-
- /// Returns the number of bytes that have been read into this compressor.
- ///
- /// Note that not all bytes read from the underlying object may be accounted
- /// for, there may still be some active buffering.
- pub fn total_in(&self) -> u64 {
- self.inner.total_in()
- }
-
- /// Returns the number of bytes that the compressor has produced.
- ///
- /// Note that not all bytes may have been read yet, some may still be
- /// buffered.
- pub fn total_out(&self) -> u64 {
- self.inner.total_out()
- }
-}
-
-impl<R: Read> Read for ZlibEncoder<R> {
- fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
- self.inner.read(buf)
- }
-}
-
-impl<W: Read + Write> Write for ZlibEncoder<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
-
-/// A ZLIB decoder, or decompressor.
-///
-/// This structure implements a [`Read`] interface. When read from, it reads
-/// compressed data from the underlying [`Read`] and provides the uncompressed data.
-///
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// # use flate2::Compression;
-/// # use flate2::write::ZlibEncoder;
-/// use flate2::read::ZlibDecoder;
-///
-/// # fn main() {
-/// # let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
-/// # e.write_all(b"Hello World").unwrap();
-/// # let bytes = e.finish().unwrap();
-/// # println!("{}", decode_reader(bytes).unwrap());
-/// # }
-/// #
-/// // Uncompresses a Zlib Encoded vector of bytes and returns a string or error
-/// // Here &[u8] implements Read
-///
-/// fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
-/// let mut z = ZlibDecoder::new(&bytes[..]);
-/// let mut s = String::new();
-/// z.read_to_string(&mut s)?;
-/// Ok(s)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct ZlibDecoder<R> {
- inner: bufread::ZlibDecoder<BufReader<R>>,
-}
-
-impl<R: Read> ZlibDecoder<R> {
- /// Creates a new decoder which will decompress data read from the given
- /// stream.
- pub fn new(r: R) -> ZlibDecoder<R> {
- ZlibDecoder::new_with_buf(r, vec![0; 32 * 1024])
- }
-
- /// Creates a new decoder which will decompress data read from the given
- /// stream `r`, using `buf` as backing to speed up reading.
- ///
- /// Note that the specified buffer will only be used up to its current
- /// length. The buffer's capacity will also not grow over time.
- pub fn new_with_buf(r: R, buf: Vec<u8>) -> ZlibDecoder<R> {
- ZlibDecoder {
- inner: bufread::ZlibDecoder::new(BufReader::with_buf(buf, r)),
- }
- }
-
- /// Creates a new decoder which will decompress data read from the given
- /// stream `r`, along with `decompression` settings.
- pub fn new_with_decompress(r: R, decompression: Decompress) -> ZlibDecoder<R> {
- ZlibDecoder::new_with_decompress_and_buf(r, vec![0; 32 * 1024], decompression)
- }
-
- /// Creates a new decoder which will decompress data read from the given
- /// stream `r`, using `buf` as backing to speed up reading,
- /// along with `decompression` settings to configure decoder.
- ///
- /// Note that the specified buffer will only be used up to its current
- /// length. The buffer's capacity will also not grow over time.
- pub fn new_with_decompress_and_buf(
- r: R,
- buf: Vec<u8>,
- decompression: Decompress,
- ) -> ZlibDecoder<R> {
- ZlibDecoder {
- inner: bufread::ZlibDecoder::new_with_decompress(
- BufReader::with_buf(buf, r),
- decompression,
- ),
- }
- }
-}
-
-impl<R> ZlibDecoder<R> {
- /// Resets the state of this decoder entirely, swapping out the input
- /// stream for another.
- ///
- /// This will reset the internal state of this decoder and replace the
- /// input stream with the one provided, returning the previous input
- /// stream. Future data read from this decoder will be the decompressed
- /// version of `r`'s data.
- ///
- /// Note that there may be currently buffered data when this function is
- /// called, and in that case the buffered data is discarded.
- pub fn reset(&mut self, r: R) -> R {
- super::bufread::reset_decoder_data(&mut self.inner);
- self.inner.get_mut().reset(r)
- }
-
- /// Acquires a reference to the underlying stream
- pub fn get_ref(&self) -> &R {
- self.inner.get_ref().get_ref()
- }
-
- /// Acquires a mutable reference to the underlying stream
- ///
- /// Note that mutation of the stream may result in surprising results if
- /// this decoder is continued to be used.
- pub fn get_mut(&mut self) -> &mut R {
- self.inner.get_mut().get_mut()
- }
-
- /// Consumes this decoder, returning the underlying reader.
- ///
- /// Note that there may be buffered bytes which are not re-acquired as part
- /// of this transition. It's recommended to only call this function after
- /// EOF has been reached.
- pub fn into_inner(self) -> R {
- self.inner.into_inner().into_inner()
- }
-
- /// Returns the number of bytes that the decompressor has consumed.
- ///
- /// Note that this will likely be smaller than what the decompressor
- /// actually read from the underlying stream due to buffering.
- pub fn total_in(&self) -> u64 {
- self.inner.total_in()
- }
-
- /// Returns the number of bytes that the decompressor has produced.
- pub fn total_out(&self) -> u64 {
- self.inner.total_out()
- }
-}
-
-impl<R: Read> Read for ZlibDecoder<R> {
- fn read(&mut self, into: &mut [u8]) -> io::Result<usize> {
- self.inner.read(into)
- }
-}
-
-impl<R: Read + Write> Write for ZlibDecoder<R> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.get_mut().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.get_mut().flush()
- }
-}
diff --git a/vendor/flate2/src/zlib/write.rs b/vendor/flate2/src/zlib/write.rs
deleted file mode 100644
index d8ad2f2..0000000
--- a/vendor/flate2/src/zlib/write.rs
+++ /dev/null
@@ -1,340 +0,0 @@
-use std::io;
-use std::io::prelude::*;
-
-use crate::zio;
-use crate::{Compress, Decompress};
-
-/// A ZLIB encoder, or compressor.
-///
-/// This structure implements a [`Write`] interface and takes a stream of
-/// uncompressed data, writing the compressed data to the wrapped writer.
-///
-/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use flate2::Compression;
-/// use flate2::write::ZlibEncoder;
-///
-/// // Vec<u8> implements Write, assigning the compressed bytes of sample string
-///
-/// # fn zlib_encoding() -> std::io::Result<()> {
-/// let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
-/// e.write_all(b"Hello World")?;
-/// let compressed = e.finish()?;
-/// # Ok(())
-/// # }
-/// ```
-#[derive(Debug)]
-pub struct ZlibEncoder<W: Write> {
- inner: zio::Writer<W, Compress>,
-}
-
-impl<W: Write> ZlibEncoder<W> {
- /// Creates a new encoder which will write compressed data to the stream
- /// given at the given compression level.
- ///
- /// When this encoder is dropped or unwrapped the final pieces of data will
- /// be flushed.
- pub fn new(w: W, level: crate::Compression) -> ZlibEncoder<W> {
- ZlibEncoder {
- inner: zio::Writer::new(w, Compress::new(level, true)),
- }
- }
-
- /// Creates a new encoder which will write compressed data to the stream
- /// `w` with the given `compression` settings.
- pub fn new_with_compress(w: W, compression: Compress) -> ZlibEncoder<W> {
- ZlibEncoder {
- inner: zio::Writer::new(w, compression),
- }
- }
-
- /// Acquires a reference to the underlying writer.
- pub fn get_ref(&self) -> &W {
- self.inner.get_ref()
- }
-
- /// Acquires a mutable reference to the underlying writer.
- ///
- /// Note that mutating the output/input state of the stream may corrupt this
- /// object, so care must be taken when using this method.
- pub fn get_mut(&mut self) -> &mut W {
- self.inner.get_mut()
- }
-
- /// Resets the state of this encoder entirely, swapping out the output
- /// stream for another.
- ///
- /// This function will finish encoding the current stream into the current
- /// output stream before swapping out the two output streams.
- ///
- /// After the current stream has been finished, this will reset the internal
- /// state of this encoder and replace the output stream with the one
- /// provided, returning the previous output stream. Future data written to
- /// this encoder will be the compressed into the stream `w` provided.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn reset(&mut self, w: W) -> io::Result<W> {
- self.inner.finish()?;
- self.inner.data.reset();
- Ok(self.inner.replace(w))
- }
-
- /// Attempt to finish this output stream, writing out final chunks of data.
- ///
- /// Note that this function can only be used once data has finished being
- /// written to the output stream. After this function is called then further
- /// calls to `write` may result in a panic.
- ///
- /// # Panics
- ///
- /// Attempts to write data to this stream may result in a panic after this
- /// function is called.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn try_finish(&mut self) -> io::Result<()> {
- self.inner.finish()
- }
-
- /// Consumes this encoder, flushing the output stream.
- ///
- /// This will flush the underlying data stream, close off the compressed
- /// stream and, if successful, return the contained writer.
- ///
- /// Note that this function may not be suitable to call in a situation where
- /// the underlying stream is an asynchronous I/O stream. To finish a stream
- /// the `try_finish` (or `shutdown`) method should be used instead. To
- /// re-acquire ownership of a stream it is safe to call this method after
- /// `try_finish` or `shutdown` has returned `Ok`.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn finish(mut self) -> io::Result<W> {
- self.inner.finish()?;
- Ok(self.inner.take_inner())
- }
-
- /// Consumes this encoder, flushing the output stream.
- ///
- /// This will flush the underlying data stream and then return the contained
- /// writer if the flush succeeded.
- /// The compressed stream will not closed but only flushed. This
- /// means that obtained byte array can by extended by another deflated
- /// stream. To close the stream add the two bytes 0x3 and 0x0.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn flush_finish(mut self) -> io::Result<W> {
- self.inner.flush()?;
- Ok(self.inner.take_inner())
- }
-
- /// Returns the number of bytes that have been written to this compressor.
- ///
- /// Note that not all bytes written to this object may be accounted for,
- /// there may still be some active buffering.
- pub fn total_in(&self) -> u64 {
- self.inner.data.total_in()
- }
-
- /// Returns the number of bytes that the compressor has produced.
- ///
- /// Note that not all bytes may have been written yet, some may still be
- /// buffered.
- pub fn total_out(&self) -> u64 {
- self.inner.data.total_out()
- }
-}
-
-impl<W: Write> Write for ZlibEncoder<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.inner.write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.inner.flush()
- }
-}
-
-impl<W: Read + Write> Read for ZlibEncoder<W> {
- fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
- self.get_mut().read(buf)
- }
-}
-
-/// A ZLIB decoder, or decompressor.
-///
-/// This structure implements a [`Write`] and will emit a stream of decompressed
-/// data when fed a stream of compressed data.
-///
-/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
-///
-/// # Examples
-///
-/// ```
-/// use std::io::prelude::*;
-/// use std::io;
-/// # use flate2::Compression;
-/// # use flate2::write::ZlibEncoder;
-/// use flate2::write::ZlibDecoder;
-///
-/// # fn main() {
-/// # let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
-/// # e.write_all(b"Hello World").unwrap();
-/// # let bytes = e.finish().unwrap();
-/// # println!("{}", decode_reader(bytes).unwrap());
-/// # }
-/// #
-/// // Uncompresses a Zlib Encoded vector of bytes and returns a string or error
-/// // Here Vec<u8> implements Write
-///
-/// fn decode_reader(bytes: Vec<u8>) -> io::Result<String> {
-/// let mut writer = Vec::new();
-/// let mut z = ZlibDecoder::new(writer);
-/// z.write_all(&bytes[..])?;
-/// writer = z.finish()?;
-/// let return_string = String::from_utf8(writer).expect("String parsing error");
-/// Ok(return_string)
-/// }
-/// ```
-#[derive(Debug)]
-pub struct ZlibDecoder<W: Write> {
- inner: zio::Writer<W, Decompress>,
-}
-
-impl<W: Write> ZlibDecoder<W> {
- /// Creates a new decoder which will write uncompressed data to the stream.
- ///
- /// When this decoder is dropped or unwrapped the final pieces of data will
- /// be flushed.
- pub fn new(w: W) -> ZlibDecoder<W> {
- ZlibDecoder {
- inner: zio::Writer::new(w, Decompress::new(true)),
- }
- }
-
- /// Creates a new decoder which will write uncompressed data to the stream `w`
- /// using the given `decompression` settings.
- ///
- /// When this decoder is dropped or unwrapped the final pieces of data will
- /// be flushed.
- pub fn new_with_decompress(w: W, decompression: Decompress) -> ZlibDecoder<W> {
- ZlibDecoder {
- inner: zio::Writer::new(w, decompression),
- }
- }
-
- /// Acquires a reference to the underlying writer.
- pub fn get_ref(&self) -> &W {
- self.inner.get_ref()
- }
-
- /// Acquires a mutable reference to the underlying writer.
- ///
- /// Note that mutating the output/input state of the stream may corrupt this
- /// object, so care must be taken when using this method.
- pub fn get_mut(&mut self) -> &mut W {
- self.inner.get_mut()
- }
-
- /// Resets the state of this decoder entirely, swapping out the output
- /// stream for another.
- ///
- /// This will reset the internal state of this decoder and replace the
- /// output stream with the one provided, returning the previous output
- /// stream. Future data written to this decoder will be decompressed into
- /// the output stream `w`.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn reset(&mut self, w: W) -> io::Result<W> {
- self.inner.finish()?;
- self.inner.data = Decompress::new(true);
- Ok(self.inner.replace(w))
- }
-
- /// Attempt to finish this output stream, writing out final chunks of data.
- ///
- /// Note that this function can only be used once data has finished being
- /// written to the output stream. After this function is called then further
- /// calls to `write` may result in a panic.
- ///
- /// # Panics
- ///
- /// Attempts to write data to this stream may result in a panic after this
- /// function is called.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn try_finish(&mut self) -> io::Result<()> {
- self.inner.finish()
- }
-
- /// Consumes this encoder, flushing the output stream.
- ///
- /// This will flush the underlying data stream and then return the contained
- /// writer if the flush succeeded.
- ///
- /// Note that this function may not be suitable to call in a situation where
- /// the underlying stream is an asynchronous I/O stream. To finish a stream
- /// the `try_finish` (or `shutdown`) method should be used instead. To
- /// re-acquire ownership of a stream it is safe to call this method after
- /// `try_finish` or `shutdown` has returned `Ok`.
- ///
- /// # Errors
- ///
- /// This function will perform I/O to complete this stream, and any I/O
- /// errors which occur will be returned from this function.
- pub fn finish(mut self) -> io::Result<W> {
- self.inner.finish()?;
- Ok(self.inner.take_inner())
- }
-
- /// Returns the number of bytes that the decompressor has consumed for
- /// decompression.
- ///
- /// Note that this will likely be smaller than the number of bytes
- /// successfully written to this stream due to internal buffering.
- pub fn total_in(&self) -> u64 {
- self.inner.data.total_in()
- }
-
- /// Returns the number of bytes that the decompressor has written to its
- /// output stream.
- pub fn total_out(&self) -> u64 {
- self.inner.data.total_out()
- }
-}
-
-impl<W: Write> Write for ZlibDecoder<W> {
- fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
- self.inner.write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.inner.flush()
- }
-}
-
-impl<W: Read + Write> Read for ZlibDecoder<W> {
- fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
- self.inner.get_mut().read(buf)
- }
-}
diff --git a/vendor/flate2/tests/corrupt-gz-file.bin b/vendor/flate2/tests/corrupt-gz-file.bin
deleted file mode 100644
index 159333b..0000000
--- a/vendor/flate2/tests/corrupt-gz-file.bin
+++ /dev/null
Binary files differ
diff --git a/vendor/flate2/tests/early-flush.rs b/vendor/flate2/tests/early-flush.rs
deleted file mode 100644
index b43f474..0000000
--- a/vendor/flate2/tests/early-flush.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-use std::io::{Read, Write};
-
-use flate2::read::GzDecoder;
-use flate2::write::GzEncoder;
-
-#[test]
-fn smoke() {
- let mut w = GzEncoder::new(Vec::new(), flate2::Compression::default());
- w.flush().unwrap();
- w.write_all(b"hello").unwrap();
-
- let bytes = w.finish().unwrap();
-
- let mut r = GzDecoder::new(&bytes[..]);
- let mut s = String::new();
- r.read_to_string(&mut s).unwrap();
- assert_eq!(s, "hello");
-}
diff --git a/vendor/flate2/tests/empty-read.rs b/vendor/flate2/tests/empty-read.rs
deleted file mode 100644
index 3724c23..0000000
--- a/vendor/flate2/tests/empty-read.rs
+++ /dev/null
@@ -1,80 +0,0 @@
-use std::io::{Read, Write};
-
-#[test]
-fn deflate_decoder_empty_read() {
- let original: &[u8] = b"Lorem ipsum dolor sit amet.";
- let mut encoder =
- flate2::write::DeflateEncoder::new(Vec::new(), flate2::Compression::default());
- encoder.write_all(original).unwrap();
- let encoded: Vec<u8> = encoder.finish().unwrap();
- let mut decoder = flate2::read::DeflateDecoder::new(encoded.as_slice());
- assert_eq!(decoder.read(&mut []).unwrap(), 0);
- let mut decoded = Vec::new();
- decoder.read_to_end(&mut decoded).unwrap();
- assert_eq!(decoded.as_slice(), original);
-}
-
-#[test]
-fn deflate_encoder_empty_read() {
- let original: &[u8] = b"Lorem ipsum dolor sit amet.";
- let mut encoder = flate2::read::DeflateEncoder::new(original, flate2::Compression::default());
- assert_eq!(encoder.read(&mut []).unwrap(), 0);
- let mut encoded = Vec::new();
- encoder.read_to_end(&mut encoded).unwrap();
- let mut decoder = flate2::read::DeflateDecoder::new(encoded.as_slice());
- let mut decoded = Vec::new();
- decoder.read_to_end(&mut decoded).unwrap();
- assert_eq!(decoded.as_slice(), original);
-}
-
-#[test]
-fn gzip_decoder_empty_read() {
- let original: &[u8] = b"Lorem ipsum dolor sit amet.";
- let mut encoder = flate2::write::GzEncoder::new(Vec::new(), flate2::Compression::default());
- encoder.write_all(original).unwrap();
- let encoded: Vec<u8> = encoder.finish().unwrap();
- let mut decoder = flate2::read::GzDecoder::new(encoded.as_slice());
- assert_eq!(decoder.read(&mut []).unwrap(), 0);
- let mut decoded = Vec::new();
- decoder.read_to_end(&mut decoded).unwrap();
- assert_eq!(decoded.as_slice(), original);
-}
-
-#[test]
-fn gzip_encoder_empty_read() {
- let original: &[u8] = b"Lorem ipsum dolor sit amet.";
- let mut encoder = flate2::read::GzEncoder::new(original, flate2::Compression::default());
- assert_eq!(encoder.read(&mut []).unwrap(), 0);
- let mut encoded = Vec::new();
- encoder.read_to_end(&mut encoded).unwrap();
- let mut decoder = flate2::read::GzDecoder::new(encoded.as_slice());
- let mut decoded = Vec::new();
- decoder.read_to_end(&mut decoded).unwrap();
- assert_eq!(decoded.as_slice(), original);
-}
-
-#[test]
-fn zlib_decoder_empty_read() {
- let original: &[u8] = b"Lorem ipsum dolor sit amet.";
- let mut encoder = flate2::write::ZlibEncoder::new(Vec::new(), flate2::Compression::default());
- encoder.write_all(original).unwrap();
- let encoded: Vec<u8> = encoder.finish().unwrap();
- let mut decoder = flate2::read::ZlibDecoder::new(encoded.as_slice());
- assert_eq!(decoder.read(&mut []).unwrap(), 0);
- let mut decoded = Vec::new();
- decoder.read_to_end(&mut decoded).unwrap();
- assert_eq!(decoded.as_slice(), original);
-}
-
-#[test]
-fn zlib_encoder_empty_read() {
- let original: &[u8] = b"Lorem ipsum dolor sit amet.";
- let mut encoder = flate2::read::ZlibEncoder::new(original, flate2::Compression::default());
- assert_eq!(encoder.read(&mut []).unwrap(), 0);
- let mut encoded = Vec::new();
- encoder.read_to_end(&mut encoded).unwrap();
- let mut decoder = flate2::read::ZlibDecoder::new(encoded.as_slice());
- let mut decoded = Vec::new();
- decoder.read_to_end(&mut decoded).unwrap();
- assert_eq!(decoded.as_slice(), original);
-}
diff --git a/vendor/flate2/tests/good-file.gz b/vendor/flate2/tests/good-file.gz
deleted file mode 100644
index f968689..0000000
--- a/vendor/flate2/tests/good-file.gz
+++ /dev/null
Binary files differ
diff --git a/vendor/flate2/tests/good-file.txt b/vendor/flate2/tests/good-file.txt
deleted file mode 100644
index ee39ac5..0000000
--- a/vendor/flate2/tests/good-file.txt
+++ /dev/null
@@ -1,733 +0,0 @@
-## ##
-timestep simulated EIR patent hosts
-0 0.136402 16855
-1 0.146872 18564
-2 0.150157 20334
-3 0.146358 22159
-4 0.136315 23655
-5 0.122354 24848
-6 0.104753 25887
-7 0.084439 26770
-8 0.06417 27238
-9 0.0450397 27349
-10 0.0295473 27274
-11 0.0184662 26909
-12 0.0110032 26324
-13 0.00634348 25513
-14 0.0036144 24469
-15 0.00208133 23383
-16 0.00122468 22345
-17 0.000752514 21342
-18 0.000545333 20416
-19 0.000546139 19657
-20 0.00054572 18806
-21 0.000545757 18015
-22 0.000545898 17349
-23 0.000546719 16594
-24 0.000547353 15955
-25 0.000547944 15374
-26 0.000547606 14765
-27 0.000594773 14212
-28 0.000969163 13677
-29 0.00168295 13180
-30 0.003059 12760
-31 0.00571599 12313
-32 0.0107918 11896
-33 0.0201943 11512
-34 0.0368013 11340
-35 0.0640629 11323
-36 0.104447 11769
-37 0.157207 12728
-38 0.216682 14261
-39 0.271159 16491
-40 0.303552 19274
-41 0.303678 22157
-42 0.271945 24875
-43 0.215445 27027
-44 0.154503 28690
-45 0.100717 30046
-46 0.0600343 30602
-47 0.0328576 30709
-48 0.016964 30315
-49 0.00841526 29310
-50 0.0040958 28058
-51 0.0019953 26662
-52 0.000986531 25259
-53 0.000545786 24049
-54 0.000546405 22966
-55 0.000546036 21933
-56 0.00054427 20953
-57 0.000542769 20057
-58 0.000541566 19304
-59 0.000541822 18477
-60 0.000541643 17695
-61 0.000541989 17002
-62 0.000769298 16391
-63 0.00150811 15805
-64 0.00295097 15172
-65 0.00566197 14690
-66 0.0105243 14206
-67 0.0186965 13791
-68 0.0313363 13470
-69 0.0490605 13377
-70 0.0711679 13631
-71 0.0953625 14209
-72 0.118026 15277
-73 0.134612 16760
-74 0.144311 18339
-75 0.146328 20124
-76 0.142936 21803
-77 0.134029 23435
-78 0.120562 24854
-79 0.103157 25880
-80 0.0834054 26597
-81 0.0632474 27226
-82 0.0447785 27294
-83 0.0295654 27169
-84 0.0184081 26803
-85 0.0109489 26265
-86 0.00631234 25375
-87 0.00359978 24306
-88 0.00206967 23260
-89 0.00122197 22225
-90 0.000751031 21277
-91 0.000544507 20295
-92 0.000543897 19417
-93 0.000543483 18623
-94 0.000542926 17837
-95 0.000542685 17070
-96 0.000542387 16424
-97 0.000541194 15838
-98 0.000540427 15177
-99 0.000540774 14608
-100 0.000588312 14066
-101 0.000959183 13499
-102 0.00166774 12979
-103 0.00303278 12545
-104 0.00567457 12067
-105 0.0107272 11712
-106 0.0200606 11368
-107 0.0364637 11207
-108 0.063339 11238
-109 0.103717 11660
-110 0.156884 12621
-111 0.217072 14151
-112 0.272311 16358
-113 0.305046 19005
-114 0.304927 21926
-115 0.272427 24662
-116 0.216478 27080
-117 0.155168 29064
-118 0.10079 30370
-119 0.0599659 30992
-120 0.0331287 30975
-121 0.017235 30317
-122 0.00860221 29455
-123 0.00419286 28172
-124 0.00203361 26809
-125 0.000998847 25476
-126 0.000551418 24230
-127 0.000551119 23106
-128 0.000552786 22147
-129 0.000553814 21183
-130 0.000553743 20280
-131 0.000554428 19423
-132 0.000555022 18598
-133 0.000555921 17864
-134 0.000556687 17187
-135 0.000789996 16527
-136 0.00154597 15870
-137 0.00302776 15226
-138 0.00581484 14685
-139 0.010812 14234
-140 0.0191832 13818
-141 0.0321572 13571
-142 0.050328 13538
-143 0.072817 13812
-144 0.0974321 14368
-145 0.120225 15436
-146 0.137418 16988
-147 0.147086 18775
-148 0.149165 20563
-149 0.144943 22223
-150 0.136631 23741
-151 0.123355 24920
-152 0.105401 25779
-153 0.0851918 26781
-154 0.0641702 27265
-155 0.0450746 27505
-156 0.0294136 27416
-157 0.0183811 27028
-158 0.0109285 26260
-159 0.00634296 25451
-160 0.00364513 24472
-161 0.0021051 23427
-162 0.00123693 22403
-163 0.000759531 21393
-164 0.000551727 20485
-165 0.000552256 19660
-166 0.000552303 18862
-167 0.000550927 18094
-168 0.000551098 17378
-169 0.000551093 16691
-170 0.000551885 16050
-171 0.000552282 15420
-172 0.000552591 14878
-173 0.00060109 14357
-174 0.000980446 13768
-175 0.00170301 13241
-176 0.003096 12745
-177 0.00579971 12294
-178 0.010976 11879
-179 0.0205422 11636
-180 0.0374515 11431
-181 0.0649916 11517
-182 0.106008 11966
-183 0.159983 12918
-184 0.221127 14484
-185 0.276503 16696
-186 0.310316 19518
-187 0.311205 22301
-188 0.276769 25047
-189 0.220506 27360
-190 0.159123 29133
-191 0.103761 30440
-192 0.0613797 31087
-193 0.033583 31037
-194 0.0173275 30555
-195 0.00861968 29617
-196 0.00419503 28292
-197 0.00203304 26944
-198 0.00100126 25569
-199 0.000553511 24349
-200 0.000554687 23257
-201 0.00055586 22204
-202 0.000555419 21176
-203 0.000556032 20316
-204 0.000555974 19509
-205 0.000556859 18746
-206 0.000556996 17978
-207 0.000557102 17288
-208 0.000790187 16672
-209 0.00154711 16057
-210 0.00303521 15449
-211 0.00584201 14915
-212 0.0108854 14397
-213 0.0193386 14010
-214 0.0324346 13730
-215 0.0507192 13674
-216 0.0736661 13874
-217 0.0987887 14515
-218 0.122411 15693
-219 0.139964 17265
-220 0.149125 18894
-221 0.151434 20662
-222 0.148067 22442
-223 0.138894 24116
-224 0.125436 25367
-225 0.107664 26360
-226 0.0865709 27044
-227 0.0655588 27428
-228 0.0459664 27714
-229 0.0301384 27687
-230 0.0186481 27262
-231 0.01103 26677
-232 0.00636957 25722
-233 0.00366188 24662
-234 0.00212213 23575
-235 0.00125358 22520
-236 0.000768665 21480
-237 0.000556393 20563
-238 0.000555892 19706
-239 0.00055534 18914
-240 0.000555027 18165
-241 0.000555062 17432
-242 0.000553766 16733
-243 0.000552984 16070
-244 0.000553634 15396
-245 0.000554286 14867
-246 0.000603759 14362
-247 0.000982974 13867
-248 0.00170532 13379
-249 0.00310471 12907
-250 0.00582577 12446
-251 0.0110122 12018
-252 0.0206284 11730
-253 0.0375835 11546
-254 0.0652192 11605
-255 0.10646 11981
-256 0.160858 12949
-257 0.223122 14478
-258 0.279678 16810
-259 0.312171 19452
-260 0.311778 22391
-261 0.276966 25204
-262 0.22251 27379
-263 0.159246 29248
-264 0.104109 30532
-265 0.0617903 30995
-266 0.0338421 31042
-267 0.0174647 30620
-268 0.00867821 29589
-269 0.00419968 28293
-270 0.00203244 26916
-271 0.00100204 25464
-272 0.000555586 24219
-273 0.000555599 23207
-274 0.00055582 22187
-275 0.00055516 21136
-276 0.000555436 20243
-277 0.000555618 19426
-278 0.000556778 18635
-279 0.000556976 17870
-280 0.000557162 17190
-281 0.0007904 16506
-282 0.00154557 15837
-283 0.00302973 15234
-284 0.00584543 14717
-285 0.0108796 14225
-286 0.0192919 13810
-287 0.032329 13605
-288 0.0505293 13536
-289 0.0733417 13760
-290 0.0982413 14378
-291 0.121477 15400
-292 0.138636 17017
-293 0.14875 18764
-294 0.150515 20516
-295 0.146372 22389
-296 0.137332 23975
-297 0.124076 25120
-298 0.106469 26137
-299 0.0862987 26973
-300 0.0650552 27584
-301 0.0456456 27741
-302 0.0300744 27565
-303 0.0187879 27212
-304 0.0112085 26432
-305 0.00648306 25501
-306 0.00370346 24466
-307 0.00213399 23472
-308 0.00125463 22415
-309 0.000765794 21427
-310 0.000552587 20533
-311 0.000553175 19632
-312 0.000553525 18831
-313 0.000554941 18119
-314 0.000556327 17336
-315 0.000556008 16721
-316 0.00055593 16086
-317 0.000556421 15516
-318 0.000557308 14918
-319 0.00060681 14402
-320 0.000990746 13849
-321 0.00172359 13355
-322 0.00313688 12902
-323 0.0058708 12425
-324 0.0110637 12087
-325 0.0206777 11743
-326 0.0376394 11531
-327 0.0656182 11582
-328 0.107414 12034
-329 0.162101 12955
-330 0.223525 14571
-331 0.279935 16842
-332 0.314601 19566
-333 0.313556 22575
-334 0.279571 25279
-335 0.221638 27642
-336 0.158038 29275
-337 0.102505 30638
-338 0.0608328 31209
-339 0.0335531 31260
-340 0.0173332 30520
-341 0.00861545 29604
-342 0.00419454 28370
-343 0.00202587 26940
-344 0.000994029 25614
-345 0.000549339 24445
-346 0.000551477 23239
-347 0.000552891 22300
-348 0.000551775 21280
-349 0.000552425 20424
-350 0.000552135 19571
-351 0.000552542 18753
-352 0.000552863 18058
-353 0.000554438 17348
-354 0.000786735 16671
-355 0.00153958 16047
-356 0.00301482 15500
-357 0.00580589 14883
-358 0.0108227 14347
-359 0.0192357 13947
-360 0.0321613 13672
-361 0.050229 13606
-362 0.0729462 13815
-363 0.0978564 14566
-364 0.120879 15674
-365 0.137663 17049
-366 0.147092 18813
-367 0.150184 20578
-368 0.146971 22245
-369 0.136769 23723
-370 0.12367 24905
-371 0.106187 25871
-372 0.0860921 26687
-373 0.0645899 27375
-374 0.0453473 27635
-375 0.0298122 27551
-376 0.0185448 27134
-377 0.0110517 26468
-378 0.00640294 25661
-379 0.00367011 24653
-380 0.00211832 23556
-381 0.00125246 22513
-382 0.00076891 21568
-383 0.000557384 20672
-384 0.000557295 19811
-385 0.000556837 18982
-386 0.000557433 18179
-387 0.000557376 17457
-388 0.000557751 16720
-389 0.000556844 16112
-390 0.000555603 15479
-391 0.000554871 14809
-392 0.00060335 14275
-393 0.000982808 13757
-394 0.00170757 13221
-395 0.00310351 12758
-396 0.0058181 12286
-397 0.010991 11906
-398 0.0205342 11557
-399 0.0373486 11393
-400 0.0647659 11487
-401 0.105589 11887
-402 0.15967 12798
-403 0.220945 14260
-404 0.277122 16477
-405 0.310108 19295
-406 0.308854 22110
-407 0.274911 24915
-408 0.218618 27273
-409 0.156618 29189
-410 0.101775 30572
-411 0.0607503 31174
-412 0.0334708 31316
-413 0.0173443 30731
-414 0.00865633 29636
-415 0.00421141 28342
-416 0.00204387 26991
-417 0.00100602 25595
-418 0.000555131 24336
-419 0.000555037 23251
-420 0.000555559 22267
-421 0.000554916 21212
-422 0.000554432 20306
-423 0.000554751 19488
-424 0.00055638 18727
-425 0.000556727 17927
-426 0.000556368 17198
-427 0.000788004 16578
-428 0.00154404 15944
-429 0.00302383 15315
-430 0.00582586 14786
-431 0.0108457 14290
-432 0.0192962 13815
-433 0.0323072 13561
-434 0.0505101 13456
-435 0.0732162 13811
-436 0.0978737 14403
-437 0.121405 15460
-438 0.138202 16993
-439 0.1482 18710
-440 0.149707 20578
-441 0.146945 22256
-442 0.137785 23713
-443 0.123767 25058
-444 0.105989 26087
-445 0.085483 26759
-446 0.0646144 27375
-447 0.0454389 27680
-448 0.0299337 27531
-449 0.018663 27041
-450 0.0111347 26416
-451 0.00644197 25614
-452 0.00369229 24666
-453 0.00211986 23647
-454 0.00124761 22650
-455 0.000769104 21642
-456 0.000558796 20693
-457 0.000559908 19746
-458 0.000559562 18952
-459 0.00056042 18100
-460 0.000559447 17401
-461 0.000557893 16756
-462 0.000557137 16148
-463 0.000557269 15504
-464 0.000557596 14974
-465 0.000606298 14408
-466 0.000987712 13909
-467 0.00171257 13402
-468 0.00311667 12891
-469 0.00584794 12433
-470 0.0110774 11980
-471 0.0207006 11713
-472 0.037673 11583
-473 0.0654988 11677
-474 0.106982 12072
-475 0.161926 12898
-476 0.224327 14548
-477 0.281709 16796
-478 0.314567 19512
-479 0.313419 22428
-480 0.278962 25186
-481 0.221864 27755
-482 0.158559 29556
-483 0.103532 30572
-484 0.0611592 31162
-485 0.0337539 31197
-486 0.0175096 30619
-487 0.00865906 29606
-488 0.00420125 28271
-489 0.00203207 26856
-490 0.00100238 25542
-491 0.000554405 24306
-492 0.00055373 23160
-493 0.0005552 22152
-494 0.000553776 21192
-495 0.000553636 20302
-496 0.000553165 19505
-497 0.000554014 18719
-498 0.00055519 17993
-499 0.000556582 17233
-500 0.000788165 16569
-501 0.00154132 15953
-502 0.00302099 15350
-503 0.00581186 14752
-504 0.0108291 14267
-505 0.0192368 13946
-506 0.0322191 13677
-507 0.0503789 13594
-508 0.0730706 13768
-509 0.0980646 14416
-510 0.121601 15634
-511 0.139046 17110
-512 0.147779 18876
-513 0.149612 20734
-514 0.145796 22414
-515 0.136936 23884
-516 0.123807 25078
-517 0.106212 26066
-518 0.0855482 26779
-519 0.0643386 27340
-520 0.0452926 27530
-521 0.0298659 27573
-522 0.0185447 27169
-523 0.0110178 26489
-524 0.00635235 25588
-525 0.00362881 24549
-526 0.00209238 23528
-527 0.00123133 22541
-528 0.000755917 21498
-529 0.000546368 20607
-530 0.000547382 19712
-531 0.000547084 18975
-532 0.000546453 18178
-533 0.000546062 17452
-534 0.000546085 16749
-535 0.000546151 16135
-536 0.000545628 15567
-537 0.000545969 14968
-538 0.000594606 14392
-539 0.000968849 13854
-540 0.00168489 13360
-541 0.00306337 12899
-542 0.00573505 12407
-543 0.0108348 12017
-544 0.02025 11713
-545 0.0368201 11517
-546 0.0639795 11556
-547 0.104882 11941
-548 0.158923 12854
-549 0.219796 14396
-550 0.275801 16733
-551 0.307622 19367
-552 0.30785 22230
-553 0.272898 24873
-554 0.217351 27152
-555 0.156138 29108
-556 0.101477 30379
-557 0.0601091 30971
-558 0.0331551 31126
-559 0.017167 30418
-560 0.00853886 29430
-561 0.00415201 28190
-562 0.00201849 26849
-563 0.000991957 25528
-564 0.000546751 24180
-565 0.00054534 23090
-566 0.000544403 22096
-567 0.00054368 21140
-568 0.000543407 20213
-569 0.000544421 19405
-570 0.000545241 18625
-571 0.000546995 17868
-572 0.000547101 17102
-573 0.00077428 16423
-574 0.00151348 15783
-575 0.00296212 15220
-576 0.00569555 14602
-577 0.0106307 14154
-578 0.0188783 13743
-579 0.0316572 13538
-580 0.0495211 13467
-581 0.0718936 13665
-582 0.0961304 14240
-583 0.119127 15341
-584 0.136233 16912
-585 0.145327 18567
-586 0.146983 20301
-587 0.143022 21953
-588 0.134931 23439
-589 0.121892 24750
-590 0.103955 25688
-591 0.0833804 26253
-592 0.0625106 26918
-593 0.0440419 27279
-594 0.0290823 27159
-595 0.0180758 26786
-596 0.0107654 26049
-597 0.00622673 25202
-598 0.00356716 24168
-599 0.00205866 23122
-600 0.00121254 22076
-601 0.000745744 21100
-602 0.000537789 20207
-603 0.000537982 19340
-604 0.000537795 18527
-605 0.000537955 17768
-606 0.000539259 17117
-607 0.00053942 16425
-608 0.000540477 15701
-609 0.000540424 15134
-610 0.000540084 14558
-611 0.00058571 14069
-612 0.00095364 13498
-613 0.00165505 13054
-614 0.00300205 12616
-615 0.00561724 12142
-616 0.0106079 11720
-617 0.0198178 11410
-618 0.0360368 11231
-619 0.0623418 11314
-620 0.101856 11688
-621 0.15376 12623
-622 0.213046 14078
-623 0.267285 16225
-624 0.299225 18856
-625 0.299517 21756
-626 0.26697 24652
-627 0.2119 27051
-628 0.151393 28925
-629 0.098869 30065
-630 0.0593653 30570
-631 0.0327177 30483
-632 0.0170081 29735
-633 0.0084493 28844
-634 0.00409333 27665
-635 0.00197466 26356
-636 0.000967996 25009
-637 0.000533137 23839
-638 0.000532992 22721
-639 0.000534258 21676
-640 0.000534251 20709
-641 0.000534556 19798
-642 0.000535287 19008
-643 0.000536214 18278
-644 0.000536647 17547
-645 0.000536556 16901
-646 0.000761043 16256
-647 0.00149108 15621
-648 0.00292808 15032
-649 0.0056527 14504
-650 0.0105421 14010
-651 0.0186823 13646
-652 0.0312164 13356
-653 0.0485643 13404
-654 0.0704061 13612
-655 0.0945219 14230
-656 0.117178 15374
-657 0.134568 16843
-658 0.144475 18492
-659 0.146915 20238
-660 0.14393 21958
-661 0.134621 23537
-662 0.121737 24773
-663 0.104744 25772
-664 0.0846226 26427
-665 0.0639754 27040
-666 0.0448457 27279
-667 0.029482 27106
-668 0.0183036 26853
-669 0.0108721 26178
-670 0.00627116 25425
-671 0.0035776 24326
-672 0.00206466 23279
-673 0.00122064 22191
-674 0.000751578 21231
-675 0.000542574 20323
-676 0.000540396 19496
-677 0.000538805 18651
-678 0.00053881 17920
-679 0.000537801 17217
-680 0.000537866 16520
-681 0.000538522 15876
-682 0.000538795 15229
-683 0.000539519 14656
-684 0.000587348 14121
-685 0.000955855 13626
-686 0.00165656 13086
-687 0.00301095 12666
-688 0.00564993 12250
-689 0.0106767 11869
-690 0.0199729 11524
-691 0.03641 11331
-692 0.0632378 11402
-693 0.103483 11788
-694 0.156399 12682
-695 0.215591 14337
-696 0.269462 16547
-697 0.303615 19239
-698 0.304506 22023
-699 0.273068 24769
-700 0.21682 27223
-701 0.154934 29029
-702 0.100495 30241
-703 0.0597382 30801
-704 0.0329221 30881
-705 0.0170591 30288
-706 0.00845353 29329
-707 0.00408176 28108
-708 0.00198037 26715
-709 0.000977102 25340
-710 0.000541566 24039
-711 0.000542333 22965
-712 0.000542417 21858
-713 0.000541182 20952
-714 0.00054038 20049
-715 0.000539725 19192
-716 0.000539603 18409
-717 0.000539754 17700
-718 0.000539679 16960
-719 0.000763508 16287
-720 0.00149327 15637
-721 0.00292609 15057
-722 0.00563308 14524
-723 0.0104893 14003
-724 0.0185874 13625
-725 0.0310985 13319
-726 0.0487417 13278
-727 0.0707124 13502
-728 0.0947795 14147
-729 0.117155 15183
-730 0.133995 16622
diff --git a/vendor/flate2/tests/gunzip.rs b/vendor/flate2/tests/gunzip.rs
deleted file mode 100644
index f7d4132..0000000
--- a/vendor/flate2/tests/gunzip.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-use flate2::read::GzDecoder;
-use flate2::read::MultiGzDecoder;
-use std::fs::File;
-use std::io::prelude::*;
-use std::io::{self, BufReader};
-use std::path::Path;
-
-// test extraction of a gzipped file
-#[test]
-fn test_extract_success() {
- let content = extract_file(Path::new("tests/good-file.gz")).unwrap();
- let mut expected = Vec::new();
- File::open("tests/good-file.txt")
- .unwrap()
- .read_to_end(&mut expected)
- .unwrap();
- assert_eq!(content, expected);
-}
-//
-// test partial extraction of a multistream gzipped file
-#[test]
-fn test_extract_success_partial_multi() {
- let content = extract_file(Path::new("tests/multi.gz")).unwrap();
- let mut expected = String::new();
- BufReader::new(File::open("tests/multi.txt").unwrap())
- .read_line(&mut expected)
- .unwrap();
- assert_eq!(content, expected.as_bytes());
-}
-
-// test extraction fails on a corrupt file
-#[test]
-fn test_extract_failure() {
- let result = extract_file(Path::new("tests/corrupt-gz-file.bin"));
- assert_eq!(result.err().unwrap().kind(), io::ErrorKind::InvalidInput);
-}
-
-//test complete extraction of a multistream gzipped file
-#[test]
-fn test_extract_success_multi() {
- let content = extract_file_multi(Path::new("tests/multi.gz")).unwrap();
- let mut expected = Vec::new();
- File::open("tests/multi.txt")
- .unwrap()
- .read_to_end(&mut expected)
- .unwrap();
- assert_eq!(content, expected);
-}
-
-// Tries to extract path into memory (assuming a .gz file).
-fn extract_file(path_compressed: &Path) -> io::Result<Vec<u8>> {
- let mut v = Vec::new();
- let f = File::open(path_compressed)?;
- GzDecoder::new(f).read_to_end(&mut v)?;
- Ok(v)
-}
-
-// Tries to extract path into memory (decompressing all members in case
-// of a multi member .gz file).
-fn extract_file_multi(path_compressed: &Path) -> io::Result<Vec<u8>> {
- let mut v = Vec::new();
- let f = File::open(path_compressed)?;
- MultiGzDecoder::new(f).read_to_end(&mut v)?;
- Ok(v)
-}
-
-#[test]
-fn empty_error_once() {
- let data: &[u8] = &[];
- let cbjson = GzDecoder::new(data);
- let reader = BufReader::new(cbjson);
- let mut stream = reader.lines();
- assert!(stream.next().unwrap().is_err());
- assert!(stream.next().is_none());
-}
diff --git a/vendor/flate2/tests/multi.gz b/vendor/flate2/tests/multi.gz
deleted file mode 100644
index cabc896..0000000
--- a/vendor/flate2/tests/multi.gz
+++ /dev/null
Binary files differ
diff --git a/vendor/flate2/tests/multi.txt b/vendor/flate2/tests/multi.txt
deleted file mode 100644
index 66a52ee..0000000
--- a/vendor/flate2/tests/multi.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-first
-second
diff --git a/vendor/flate2/tests/zero-write.rs b/vendor/flate2/tests/zero-write.rs
deleted file mode 100644
index 22be8ee..0000000
--- a/vendor/flate2/tests/zero-write.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-#[test]
-fn zero_write_is_error() {
- let mut buf = [0u8];
- let writer = flate2::write::DeflateEncoder::new(&mut buf[..], flate2::Compression::default());
- assert!(writer.finish().is_err());
-}