mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-06-25 14:22:54 +02:00
Don't panic when an argument is invalid UTF-8.
Suggest a workaround.
This commit is contained in:
15
src/args.rs
15
src/args.rs
@ -382,9 +382,22 @@ impl Args {
|
|||||||
///
|
///
|
||||||
/// Also, initialize a global logger.
|
/// Also, initialize a global logger.
|
||||||
pub fn parse() -> Result<Args> {
|
pub fn parse() -> Result<Args> {
|
||||||
|
// Get all of the arguments, being careful to require valid UTF-8.
|
||||||
|
let mut argv = vec![];
|
||||||
|
for arg in env::args_os().skip(1) {
|
||||||
|
match arg.into_string() {
|
||||||
|
Ok(s) => argv.push(s),
|
||||||
|
Err(s) => {
|
||||||
|
errored!("Argument '{}' is not valid UTF-8. \
|
||||||
|
Use hex escape sequences to match arbitrary \
|
||||||
|
bytes in a pattern (e.g., \\xFF).",
|
||||||
|
s.to_string_lossy());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
let raw: RawArgs =
|
let raw: RawArgs =
|
||||||
Docopt::new(USAGE)
|
Docopt::new(USAGE)
|
||||||
.and_then(|d| d.version(Some(version())).decode())
|
.and_then(|d| d.argv(argv).version(Some(version())).decode())
|
||||||
.unwrap_or_else(|e| e.exit());
|
.unwrap_or_else(|e| e.exit());
|
||||||
|
|
||||||
let mut logb = env_logger::LogBuilder::new();
|
let mut logb = env_logger::LogBuilder::new();
|
||||||
|
Reference in New Issue
Block a user