mirror of
https://github.com/openharmony/third_party_rust_cc-rs.git
synced 2026-07-01 06:41:52 -04:00
Fix gcc-shim, apply clippy warning & optimizations to it (#777)
This commit is contained in:
+47
-25
@@ -2,7 +2,7 @@
|
||||
|
||||
use std::env;
|
||||
use std::fs::File;
|
||||
use std::io::prelude::*;
|
||||
use std::io::{self, prelude::*};
|
||||
use std::path::PathBuf;
|
||||
|
||||
fn main() {
|
||||
@@ -10,39 +10,61 @@ fn main() {
|
||||
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)),
|
||||
env::var_os("GCCTEST_OUT_DIR")
|
||||
.unwrap_or_else(|| panic!("{}: 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 = (0..).find_map(|i| {
|
||||
let candidate = out_dir.join(format!("out{}", i));
|
||||
|
||||
// If the file exists, commands have already run. Try again.
|
||||
if candidate.exists() {
|
||||
continue;
|
||||
// If the file exists, commands have already run. Try again.
|
||||
None
|
||||
} else {
|
||||
Some(candidate)
|
||||
}
|
||||
}).unwrap_or_else(|| panic!("Cannot find the first nonexistent candidate file to which the program's args can be written under out_dir '{}'", out_dir.display()));
|
||||
|
||||
// Create a file and record the args passed to the command.
|
||||
let f = File::create(&candidate).unwrap_or_else(|e| {
|
||||
panic!(
|
||||
"{}: can't create candidate: {}, error: {}",
|
||||
program,
|
||||
candidate.display(),
|
||||
e
|
||||
)
|
||||
});
|
||||
let mut f = io::BufWriter::new(f);
|
||||
|
||||
(|| {
|
||||
for arg in args {
|
||||
writeln!(f, "{}", arg)?;
|
||||
}
|
||||
|
||||
// Create a file and record the args passed to the command.
|
||||
let mut f = File::create(candidate).expect(&format!(
|
||||
"{}: can't create candidate: {}",
|
||||
f.flush()?;
|
||||
|
||||
let mut f = f.into_inner()?;
|
||||
f.flush()?;
|
||||
f.sync_all()
|
||||
})()
|
||||
.unwrap_or_else(|e| {
|
||||
panic!(
|
||||
"{}: can't write to candidate: {}, error: {}",
|
||||
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;
|
||||
}
|
||||
candidate.display(),
|
||||
e
|
||||
)
|
||||
});
|
||||
|
||||
// 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()
|
||||
));
|
||||
File::create(path).unwrap_or_else(|e| {
|
||||
panic!(
|
||||
"{}: can't create libfoo.a: {}, error: {}",
|
||||
program,
|
||||
path.display(),
|
||||
e
|
||||
)
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user