diff options
author | Julian Sitkevich <1553398+sitkevij@users.noreply.github.com> | 2020-10-26 08:29:03 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-26 08:29:03 -0700 |
commit | ee50c6b9d06593801b69c1748ac4a1533a6e138c (patch) | |
tree | 71f1d0a2a0c5fea7cc70ea1ec381a5ed18d545ec | |
parent | a6ae005348a7912226489bbd48ac556be136775e (diff) | |
parent | b395debce4689f5b8d063a3e43031c606eeb0f01 (diff) |
Merge pull request #28 from poliorcetics/fix-len-crash
Ensures '--len' does not crash or hang
-rw-r--r-- | src/lib.rs | 22 |
1 files changed, 8 insertions, 14 deletions
@@ -250,7 +250,7 @@ pub fn run(matches: ArgMatches) -> Result<(), Box<dyn Error>> { } if let Some(length) = matches.value_of(ARG_LEN) { - truncate_len = length.parse::<u64>().unwrap(); + truncate_len = length.parse::<u64>()?; } if let Some(format) = matches.value_of(ARG_FMT) { @@ -341,24 +341,18 @@ pub fn is_stdin(matches: ArgMatches) -> Result<bool, Box<dyn Error>> { dbg!(env::args().len(), matches.args.len()); dbg!(env::args().nth(0).unwrap()); } - if let Some(nth1) = env::args().nth(1) { + if let Some(file) = matches.value_of(ARG_INP) { if DBG > 0 { - dbg!(nth1); + dbg!(file); } - for arg in ARGS.iter() { - if let Some(index) = matches.index_of(arg) { - if let 2 = index { - is_stdin = true; - } - } + is_stdin = false; + } else if let Some(nth1) = env::args().nth(1) { + if DBG > 0 { + dbg!(nth1); } + is_stdin = ARGS.iter().any(|arg| matches.index_of(arg) == Some(2)); } else if matches.args.is_empty() { is_stdin = true; - } else if let Some(file) = matches.value_of(ARG_INP) { - if DBG > 0 { - dbg!(file); - } - is_stdin = false; } if DBG > 0 { dbg!(is_stdin); |