mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 19:47:45 +00:00
* Fix missing dependency to "process" to make it compile. * fix issue of not forwarding stdout from strip program * fix issue of applying "./" redundantly * cargo fmt
This commit is contained in:
parent
55b7b2fcb5
commit
dc533a915a
3 changed files with 24 additions and 14 deletions
|
@ -25,6 +25,7 @@ uucore = { workspace = true, features = [
|
||||||
"mode",
|
"mode",
|
||||||
"perms",
|
"perms",
|
||||||
"entries",
|
"entries",
|
||||||
|
"process",
|
||||||
] }
|
] }
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
|
|
|
@ -776,27 +776,23 @@ fn copy_file(from: &Path, to: &Path) -> UResult<()> {
|
||||||
///
|
///
|
||||||
fn strip_file(to: &Path, b: &Behavior) -> UResult<()> {
|
fn strip_file(to: &Path, b: &Behavior) -> UResult<()> {
|
||||||
// Check if the filename starts with a hyphen and adjust the path
|
// Check if the filename starts with a hyphen and adjust the path
|
||||||
let to = if to
|
let to_str = to.as_os_str().to_str().unwrap_or_default();
|
||||||
.file_name()
|
let to = if to_str.starts_with('-') {
|
||||||
.unwrap_or_default()
|
|
||||||
.to_str()
|
|
||||||
.unwrap_or_default()
|
|
||||||
.starts_with('-')
|
|
||||||
{
|
|
||||||
let mut new_path = PathBuf::from(".");
|
let mut new_path = PathBuf::from(".");
|
||||||
new_path.push(to);
|
new_path.push(to);
|
||||||
new_path
|
new_path
|
||||||
} else {
|
} else {
|
||||||
to.to_path_buf()
|
to.to_path_buf()
|
||||||
};
|
};
|
||||||
match process::Command::new(&b.strip_program).arg(&to).output() {
|
match process::Command::new(&b.strip_program).arg(&to).status() {
|
||||||
Ok(o) => {
|
Ok(status) => {
|
||||||
if !o.status.success() {
|
if !status.success() {
|
||||||
// Follow GNU's behavior: if strip fails, removes the target
|
// Follow GNU's behavior: if strip fails, removes the target
|
||||||
let _ = fs::remove_file(to);
|
let _ = fs::remove_file(to);
|
||||||
return Err(InstallError::StripProgramFailed(
|
return Err(InstallError::StripProgramFailed(format!(
|
||||||
String::from_utf8(o.stderr).unwrap_or_default(),
|
"strip process terminated abnormally - exit code: {}",
|
||||||
)
|
status.code().unwrap()
|
||||||
|
))
|
||||||
.into());
|
.into());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -699,7 +699,20 @@ fn test_install_and_strip_with_program_hyphen() {
|
||||||
.arg("src")
|
.arg("src")
|
||||||
.arg("-dest")
|
.arg("-dest")
|
||||||
.succeeds()
|
.succeeds()
|
||||||
.no_stderr();
|
.no_stderr()
|
||||||
|
.stdout_is("./-dest\n");
|
||||||
|
|
||||||
|
scene
|
||||||
|
.ucmd()
|
||||||
|
.arg("-s")
|
||||||
|
.arg("--strip-program")
|
||||||
|
.arg("./no-hyphen")
|
||||||
|
.arg("--")
|
||||||
|
.arg("src")
|
||||||
|
.arg("./-dest")
|
||||||
|
.succeeds()
|
||||||
|
.no_stderr()
|
||||||
|
.stdout_is("./-dest\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue