diff options
author | Daniel Mueller <deso@posteo.net> | 2019-08-15 08:12:14 -0700 |
---|---|---|
committer | Daniel Mueller <deso@posteo.net> | 2019-08-15 08:12:14 -0700 |
commit | b766d584b36b78c96e9ef60ec927214c74ede4ab (patch) | |
tree | f4032b79b7a51183947e9ccd6e363fe5946dd1d3 /cc/src/bin/gcc-shim.rs | |
parent | 155f9b7e7f36975240ef93f3daf983b228592a11 (diff) | |
download | nitrocli-b766d584b36b78c96e9ef60ec927214c74ede4ab.tar.gz nitrocli-b766d584b36b78c96e9ef60ec927214c74ede4ab.tar.bz2 |
Update cc crate to 1.0.40
This change updates the cc crate to version 1.0.40.
Import subrepo cc/:cc at 6ad3da7558ec3ccb4dc9c2ed1487fc139469d41e
Diffstat (limited to 'cc/src/bin/gcc-shim.rs')
-rw-r--r-- | cc/src/bin/gcc-shim.rs | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/cc/src/bin/gcc-shim.rs b/cc/src/bin/gcc-shim.rs index 7fd0ea8..1731df8 100644 --- a/cc/src/bin/gcc-shim.rs +++ b/cc/src/bin/gcc-shim.rs @@ -6,18 +6,43 @@ use std::io::prelude::*; use std::path::PathBuf; fn main() { - let out_dir = PathBuf::from(env::var_os("GCCTEST_OUT_DIR").unwrap()); + let mut args = env::args(); + let program = args.next().expect("Unexpected empty args"); + + let out_dir = PathBuf::from( + env::var_os("GCCTEST_OUT_DIR").expect(&format!("{}: GCCTEST_OUT_DIR not found", program)), + ); + + // Find the first nonexistent candidate file to which the program's args can be written. for i in 0.. { - let candidate = out_dir.join(format!("out{}", i)); + let candidate = &out_dir.join(format!("out{}", i)); + + // If the file exists, commands have already run. Try again. if candidate.exists() { continue; } - let mut f = File::create(candidate).unwrap(); - for arg in env::args().skip(1) { - writeln!(f, "{}", arg).unwrap(); - } - File::create(out_dir.join("libfoo.a")).unwrap(); + // Create a file and record the args passed to the command. + let mut f = File::create(candidate).expect(&format!( + "{}: can't create candidate: {}", + program, + candidate.to_string_lossy() + )); + for arg in args { + writeln!(f, "{}", arg).expect(&format!( + "{}: can't write to candidate: {}", + program, + candidate.to_string_lossy() + )); + } break; } + + // Create a file used by some tests. + let path = &out_dir.join("libfoo.a"); + File::create(path).expect(&format!( + "{}: can't create libfoo.a: {}", + program, + path.to_string_lossy() + )); } |