summaryrefslogtreecommitdiffstats
path: root/src/args.rs
diff options
context:
space:
mode:
authorMarc Tiehuis <marctiehuis@gmail.com>2017-03-01 18:38:06 +1300
committerAndrew Gallant <jamslam@gmail.com>2017-03-08 10:17:18 -0500
commitadff43fbb4ce7b0663759d445a944286583acaf4 (patch)
tree6da6a634a90465f129472d004fd1ec09f6188bab /src/args.rs
parent71585f6d476265338e9ee4e924b4f43b02f2d233 (diff)
Remove clap validator + add max-filesize integration tests
Diffstat (limited to 'src/args.rs')
-rw-r--r--src/args.rs16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/args.rs b/src/args.rs
index 5f6d9916..8cf7cd69 100644
--- a/src/args.rs
+++ b/src/args.rs
@@ -791,20 +791,18 @@ impl<'a> ArgMatches<'a> {
None => return Ok(None)
};
- let re = Regex::new(r#"^(\d+)([KMG])?$"#).unwrap();
+ let re = Regex::new("^([0-9]+)([KMG])?$").unwrap();
let caps = try!(re.captures(&max_filesize)
.ok_or("invalid format for max-filesize argument"));
- let value = match caps.get(1) {
- Some(value) => Some(try!(value.as_str().parse::<u64>())),
- None => None
- };
+ let value = try!(caps[1].parse::<u64>().map_err(|err| err.to_string()));
let suffix = caps.get(2).map(|x| x.as_str());
+
match suffix {
- None => Ok(value),
- Some("K") => Ok(value.map(|x| x * 1024)),
- Some("M") => Ok(value.map(|x| x * 1024 * 1024)),
- Some("G") => Ok(value.map(|x| x * 1024 * 1024 * 1024)),
+ None => Ok(Some(value)),
+ Some("K") => Ok(Some(value * 1024)),
+ Some("M") => Ok(Some(value * 1024 * 1024)),
+ Some("G") => Ok(Some(value * 1024 * 1024 * 1024)),
_ => Err(From::from("invalid suffix for max-filesize argument"))
}
}