Cleanup argument parsing

This commit is contained in:
Aaron Hill 2019-04-08 21:40:52 -04:00
parent 5530d295ad
commit 6b0440e26d
No known key found for this signature in database
GPG Key ID: B4087E510E98B164

View File

@ -146,23 +146,22 @@ fn main() {
"--" => {
after_dashdash = true;
}
_ => {
let split: Vec<String> = arg.split("-Zmiri-seed=").map(|s| s.to_owned()).collect();
if split.len() == 2 {
if seed.is_some() {
panic!("Cannot specify -Zmiri-seed multiple times!");
}
let seed_raw = hex::decode(&split[1]).unwrap();
if seed_raw.len() > 8 {
panic!(format!("-Zmiri-seed must be at most 8 bytes, was {}", seed_raw.len()));
}
let mut bytes = [0; 8];
bytes[..seed_raw.len()].copy_from_slice(&hex::decode(&split[1]).unwrap());
seed = Some(u64::from_be_bytes(bytes));
} else {
rustc_args.push(arg);
arg if arg.starts_with("-Zmiri-seed=") => {
if seed.is_some() {
panic!("Cannot specify -Zmiri-seed multiple times!");
}
let seed_raw = hex::decode(arg.trim_start_matches("-Zmiri-seed=")).unwrap();
if seed_raw.len() > 8 {
panic!(format!("-Zmiri-seed must be at most 8 bytes, was {}", seed_raw.len()));
}
let mut bytes = [0; 8];
bytes[..seed_raw.len()].copy_from_slice(&seed_raw);
seed = Some(u64::from_be_bytes(bytes));
},
_ => {
rustc_args.push(arg);
}
}
}