1
0
mirror of https://github.com/BurntSushi/ripgrep.git synced 2024-12-12 19:18:24 +02:00
ripgrep/crates/cli
Vasili Revelas 5af7707a35 cli: fix process leak
If ripgrep was called in a way where the entire contents of a file
aren't read (like --files-with-matches, among other methods), and if the
file was read through an external process, then ripgrep would never reap
that process.

We fix this by introducing an explicit 'close' method, which we now call
when using decompression or preprocessor searches.

The implementation of 'close' is a little hokey. In particular, when we
close stdout, this usually results in a broken pipe, and, consequently,
a non-zero code returned once the child process is reaped. This is
"situation normal," so we invent a (hopefully portable) heuristic for
detecting it.

Fixes #1766, Closes #1767
2021-05-31 21:51:18 -04:00
..
src cli: fix process leak 2021-05-31 21:51:18 -04:00
Cargo.toml grep-cli-0.1.5 2020-05-29 09:14:18 -04:00
LICENSE-MIT repo: move all source code in crates directory 2020-02-17 19:24:53 -05:00
README.md doc: update CI links in crate READMEs 2020-11-16 19:07:16 -05:00
UNLICENSE repo: move all source code in crates directory 2020-02-17 19:24:53 -05:00

grep-cli

A utility library that provides common routines desired in search oriented command line applications. This includes, but is not limited to, parsing hex escapes, detecting whether stdin is readable and more. To the extent possible, this crate strives for compatibility across Windows, macOS and Linux.

Build status

Dual-licensed under MIT or the UNLICENSE.

Documentation

https://docs.rs/grep-cli

NOTE: You probably don't want to use this crate directly. Instead, you should prefer the facade defined in the grep crate.

Usage

Add this to your Cargo.toml:

[dependencies]
grep-cli = "0.1"

and this to your crate root:

extern crate grep_cli;