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",
|
||||
"perms",
|
||||
"entries",
|
||||
"process",
|
||||
] }
|
||||
|
||||
[[bin]]
|
||||
|
|
|
@ -776,27 +776,23 @@ fn copy_file(from: &Path, to: &Path) -> UResult<()> {
|
|||
///
|
||||
fn strip_file(to: &Path, b: &Behavior) -> UResult<()> {
|
||||
// Check if the filename starts with a hyphen and adjust the path
|
||||
let to = if to
|
||||
.file_name()
|
||||
.unwrap_or_default()
|
||||
.to_str()
|
||||
.unwrap_or_default()
|
||||
.starts_with('-')
|
||||
{
|
||||
let to_str = to.as_os_str().to_str().unwrap_or_default();
|
||||
let to = if to_str.starts_with('-') {
|
||||
let mut new_path = PathBuf::from(".");
|
||||
new_path.push(to);
|
||||
new_path
|
||||
} else {
|
||||
to.to_path_buf()
|
||||
};
|
||||
match process::Command::new(&b.strip_program).arg(&to).output() {
|
||||
Ok(o) => {
|
||||
if !o.status.success() {
|
||||
match process::Command::new(&b.strip_program).arg(&to).status() {
|
||||
Ok(status) => {
|
||||
if !status.success() {
|
||||
// Follow GNU's behavior: if strip fails, removes the target
|
||||
let _ = fs::remove_file(to);
|
||||
return Err(InstallError::StripProgramFailed(
|
||||
String::from_utf8(o.stderr).unwrap_or_default(),
|
||||
)
|
||||
return Err(InstallError::StripProgramFailed(format!(
|
||||
"strip process terminated abnormally - exit code: {}",
|
||||
status.code().unwrap()
|
||||
))
|
||||
.into());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -699,7 +699,20 @@ fn test_install_and_strip_with_program_hyphen() {
|
|||
.arg("src")
|
||||
.arg("-dest")
|
||||
.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]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue