compiling the zip2 crate to wasm with the goal of compiling to luau through wasynth
Find a file
Brett Simons 722234711f
Fix directory check in extract function
The directory check is not robust and fails if the path uses the Windows style path separator and not the unix style. A function "is_dir" already exists and accounts for this so this change switches to using that function instead.
2024-04-30 09:05:16 -07:00
.github ci: Reduce fuzz testing duration so that it can reliably pass for the merge queue 2024-04-29 21:22:49 -07:00
benches cargo fmt --all 2024-04-19 18:52:45 -07:00
examples style: fix Cargo warning re cfg(any()) 2024-04-24 03:51:58 -07:00
fuzz test(fuzz): Add recent fuzz_write failure to fuzz_read corpus (failure actually occurred in read) 2024-04-29 16:59:39 -07:00
security-advisories in-source vulnerability tracking 2023-09-19 18:55:01 +01:00
src Fix directory check in extract function 2024-04-30 09:05:16 -07:00
tests fix: Decrypt the read bytes in ZipCrypto instead of entire buffer 2024-04-27 23:41:32 +07:00
.gitignore Ignore .DS_Store files 2024-04-17 19:19:54 -07:00
.whitesource Add .whitesource configuration file 2023-04-23 21:33:22 +00:00
Cargo.toml build: Emit a warning when deprecated deflate-miniz is used 2024-04-29 16:49:43 -07:00
CHANGELOG.md doc: Fill missing CHANGELOG entries for 1.1.2 2024-04-28 14:40:29 -07:00
cliff.toml doc: exclude doc updates from CHANGELOG 2024-04-22 19:18:15 -07:00
CODE_OF_CONDUCT.md doc: veeeery small fix to CoC 2022-01-23 17:35:39 +03:00
CONTRIBUTING.md doc: Add requirement for Conventional Commits 2024-04-22 18:19:24 -07:00
LICENSE Added Travis support, README and LICENSE 2014-09-11 10:50:41 +02:00
README.md doc: update repo link and Actions badge link 2024-04-28 13:26:44 -07:00
release-plz.toml doc: exclude doc updates from CHANGELOG 2024-04-22 19:18:15 -07:00

zip

Build Status Crates.io version

Documentation

Info

A zip library for rust which supports reading and writing of simple ZIP files. Formerly hosted at https://github.com/zip-rs/zip.

Supported compression formats:

  • stored (i.e. none)
  • deflate
  • deflate64 (decompression only)
  • bzip2
  • zstd
  • lzma (decompression only)

Currently unsupported zip extensions:

  • Multi-disk

Features

The features available are:

  • aes-crypto: Enables decryption of files which were encrypted with AES. Supports AE-1 and AE-2 methods.
  • deflate: Enables decompressing the deflate compression algorithm, which is the default for zip files.
  • deflate-zlib: Enables deflating files with the zlib library (used when compression quality is 0..=9).
  • deflate-zlib-ng: Enables deflating files with the zlib-ng library (used when compression quality is 0..=9). This is the fastest deflate implementation available.
  • deflate-zopfli: Enables deflating files with the zopfli library (used when compression quality is 10..=264). This is the most effective deflate implementation available.
  • deflate64: Enables the deflate64 compression algorithm. Only decompression is supported.
  • lzma: Enables the LZMA compression algorithm. Only decompression is supported.
  • bzip2: Enables the BZip2 compression algorithm.
  • time: Enables features using the time crate.
  • chrono: Enables converting last-modified zip::DateTime to and from chrono::NaiveDateTime.
  • zstd: Enables the Zstandard compression algorithm.

By default aes-crypto, deflate, deflate-zlib-ng, deflate-zopfli, bzip2, time and zstd are enabled.

The following feature flags are deprecated:

  • deflate-miniz: Use flate2's default backend for compression. Currently the same as deflate.

MSRV

Our current Minimum Supported Rust Version is 1.70. When adding features, we will follow these guidelines:

  • We will always support the latest four minor Rust versions. This gives you a 6 month window to upgrade your compiler.
  • Any change to the MSRV will be accompanied with a minor version bump.

Examples

See the examples directory for:

  • How to write a file to a zip.
  • How to write a directory of files to a zip (using walkdir).
  • How to extract a zip file.
  • How to extract a single file from a zip.
  • How to read a zip from the standard input.

Fuzzing

Fuzzing support is through cargo fuzz. To install cargo fuzz:

cargo install cargo-fuzz

To list fuzz targets:

cargo +nightly fuzz list

To start fuzzing zip extraction:

cargo +nightly fuzz run fuzz_read

To start fuzzing zip creation:

cargo +nightly fuzz run fuzz_write