From 0b04553affdb4e15ffd4ef2a29840cad3fc4fc7a Mon Sep 17 00:00:00 2001 From: dana Date: Sat, 3 Nov 2018 15:50:27 -0500 Subject: [PATCH] grep-cli: support Brotli/Zstd decompression Fixes #1099 --- grep-cli/src/decompress.rs | 9 +++++---- src/app.rs | 6 +++--- tests/data/sherlock.br | 2 ++ tests/data/sherlock.zst | Bin 0 -> 249 bytes tests/misc.rs | 30 ++++++++++++++++++++++++++++++ 5 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 tests/data/sherlock.br create mode 100644 tests/data/sherlock.zst diff --git a/grep-cli/src/decompress.rs b/grep-cli/src/decompress.rs index ad108ea0..e53d2a59 100644 --- a/grep-cli/src/decompress.rs +++ b/grep-cli/src/decompress.rs @@ -352,6 +352,8 @@ fn default_decompression_commands() -> Vec { const ARGS_XZ: &[&str] = &["xz", "-d", "-c"]; const ARGS_LZ4: &[&str] = &["lz4", "-d", "-c"]; const ARGS_LZMA: &[&str] = &["xz", "--format=lzma", "-d", "-c"]; + const ARGS_BROTLI: &[&str] = &["brotli", "-d", "-c"]; + const ARGS_ZSTD: &[&str] = &["zstd", "-q", "-d", "-c"]; fn cmd(glob: &str, args: &[&str]) -> DecompressionCommand { DecompressionCommand { @@ -367,15 +369,14 @@ fn default_decompression_commands() -> Vec { vec![ cmd("*.gz", ARGS_GZIP), cmd("*.tgz", ARGS_GZIP), - cmd("*.bz2", ARGS_BZIP), cmd("*.tbz2", ARGS_BZIP), - cmd("*.xz", ARGS_XZ), cmd("*.txz", ARGS_XZ), - cmd("*.lz4", ARGS_LZ4), - cmd("*.lzma", ARGS_LZMA), + cmd("*.br", ARGS_BROTLI), + cmd("*.zst", ARGS_ZSTD), + cmd("*.zstd", ARGS_ZSTD), ] } diff --git a/src/app.rs b/src/app.rs index 037feec3..8639262f 100644 --- a/src/app.rs +++ b/src/app.rs @@ -2021,9 +2021,9 @@ This flag can be used with the -o/--only-matching flag. fn flag_search_zip(args: &mut Vec) { const SHORT: &str = "Search in compressed files."; const LONG: &str = long!("\ -Search in compressed files. Currently gz, bz2, xz, lzma and lz4 files are -supported. This option expects the decompression binaries to be available in -your PATH. +Search in compressed files. Currently gzip, bzip2, xz, LZ4, LZMA, Brotli and +Zstd files are supported. This option expects the decompression binaries to be +available in your PATH. This flag can be disabled with --no-search-zip. "); diff --git a/tests/data/sherlock.br b/tests/data/sherlock.br new file mode 100644 index 00000000..7d0a9613 --- /dev/null +++ b/tests/data/sherlock.br @@ -0,0 +1,2 @@ +n-_. cMY4Ya -LO(8sn^Gwш!, +KD/7th ]jE_;drFQs/:DIVB}T7ѵH2)M[ui50ڮY6%ר_U by4Ϡ!&g# \ No newline at end of file diff --git a/tests/data/sherlock.zst b/tests/data/sherlock.zst new file mode 100644 index 0000000000000000000000000000000000000000..c649ac9b1b3c00c94c77fa794a0dbf6b202bc2d1 GIT binary patch literal 249 zcmVD9fTvAX>`s{}h0;l}`@41Eh=@$F8_{9{06HxIEdVS4 zD_QlWFm<8VBMJwIqoB$o0$iIbCJ9>4g;9ykn$Y^7b)oJRIB^RG_-LId5JzFk2fd2v zv)J`D+$ZEIAMypCab4UX^l(j`R~h0XvH69x<$L3Uep#u2nFPr%95Sx;ke3+*0Mc_F zA(i9Q@j21$a@7Z&Xlgzqn8)p^_`KzE4fnc2co4+E9F^NWs~e|$Mw^<8gUY)qHs53< zWVp>bqA*`&#%7(7gq(Q1484BbdIJXl0V|bIi~txcA5{e