From 44e01f7921217a6b18430ff6cc396235141c8395 Mon Sep 17 00:00:00 2001 From: Yury Zhytkou <54360928+zhitkoff@users.noreply.github.com> Date: Tue, 12 Mar 2024 09:53:25 -0400 Subject: [PATCH] update from main (#5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci: use codecov token in CICD/GnuTests workflows * tee: fail test if string setup fails * sort: add skipped test for combined flags Now that clap#2624 has been resolved, we can and should test both variants. * cat: don't flake even on exotic pipe buffer sizes See also 9995c637aa5de190ddce0abc4be36d773797f1bc. There is a race condition between the writing thread and the command. It is easily possible that on the developer's machine, the writing thread is always faster, filling the kernel's buffer of the stdin pipe, thus succeeding the write. It is also easily possible that on the busy CI machines, the child command runs first for whatever reason, and exits early, thus killing the pipe, which causes the later write to fail. This results in a flaky test. Let's prevent flaky tests. * numfmt: don't flake even on exotic pipe buffer sizes * split: don't flake even on exotic pipe buffer sizes * simulate terminal utility (squash) * workaround: run builds with retry (a) * added configurable terminal size * chore(deps): update rust crate rayon to 1.9 * cargo: fix feature = "cargo-clippy" deprecation * tests/printf: Fix char_as_byte test, add char and string padding tests * printf: Change get_char and write_padded to handle bytes instead of chars * uucore/format: add padlen to spell-checker:ignore * tests/printf: Verify the correct error behavior of printf when provided with '%0c' or '%0s' * printf: Raise error on '%0c' and '%0s' formats * cp: fix flaky test test_cp_arg_interactive_update, document adjacent bug * chore(deps): update rust crate walkdir to 2.5 * cat: permit repeating command-line flags * cat: fix -b and -n anti-symmetry * cat: ignore -u flag, just like GNU does * tests/common/util.rs: add cfg(feature = "env") * cat: prefix two test fns with "test_" * Bump mio from 0.8.10 to 0.8.11 * extend error message for case when writer instanciation fails second time * Bump chrono from 0.4.34 to 0.4.35 * ls: use chrono::TimeDelta::try_seconds instead of deprecated chrono::TimeDelta::seconds * touch: replace use of deprecated chrono functions * chmod: slightly adjust error message when preserve-root is triggered One of the GNU tests checks for the exact error message. * chgrp+chown: also trigger preserve-root during dirwalking, fix error message This is explicitly tested in the GNU tests. * uucore: drop unused function resolve_relative_path This function is by necessity ill-defined: Depending on the context, '..' is either the logical parent directory, sometimes the physical parent directory. This function can only work for the latter case, in which case `Path::canonicalize` is often a better approach. * split: close as much fds as needed for opening new one * use std::command::pre_exec() to set limits on child before exec * chore(deps): update softprops/action-gh-release action to v2 * dd: treat arg as bytes if it contains 'B' * Fix clippy warnings * tr: stream output instead of buffering This should lower memory consumption, and fixes OOM in some scenarios. * shuf: fix and test off-by-one errors around ranges * shuf: fix error message text on negative-sized ranges Found by @cakebaker: https://github.com/uutils/coreutils/pull/6011#discussion_r1501838317 * chcon: allow overriding between --dereference and --no-dereference * chcon: allow repeated flags and arguments * touch: Respect -h when getting metadata (#5951) * Add tests that stat symlinks * Check follow first in stat * Don't run tests on FreeBSD It would be possible to get them to run on FreeBSD by avoiding get_symlink_times, but the behavior we're testing is not platform-specific, so it's fine to not test it on FreeBSD. --------- Co-authored-by: Sylvestre Ledru * pr: fix deprecation warnings & remove comment * chgrp: fix clippy warning * cut: allow non utf8 characters for delimiters (#6037) * cp: improve the support of --attributes-only (#6051) * cp: improve the support of --attributes-only * remove useless comments Co-authored-by: Daniel Hofstetter --------- Co-authored-by: Daniel Hofstetter * cp: Split the copy_file function a bit * parser: if closing square bracket not found, stop looking for it again This solves #5584, where the fuzzing would take hours without this. * Fix install: invalid link at destination also remove some FixMEs for FreeBsd * Bump nix from 0.27 to 0.28 * uucore/pipes: adapt to new return type of nix fn nix 0.28 changed the return type of unistd::pipe() from Result<(RawFd, RawFd), Error> to Result<(OwnedFd, OwnedFd), Error> * tty: unistd::ttyname takes AsFd instead of RawFd change introduced by nix 0.28 * stty: remove ofill output flag flag was removed from nix::sys::termios::OutputFlags in nix 0.28 * cat: adapt to type change of unistd::write() nix 0.28 changed "write(fd: RawFd, buf: &[u8]) -> Result" to "write(fd: Fd, buf: &[u8]) -> Result" * chore(deps): update rust crate blake3 to 1.5.1 --------- Co-authored-by: Daniel Hofstetter Co-authored-by: Ben Wiederhake Co-authored-by: Ulrich Hornung Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Sylvestre Ledru Co-authored-by: Dimitris Apostolou Co-authored-by: Dorian PĂ©ron Co-authored-by: Terts Diepraam Co-authored-by: mhead Co-authored-by: Yash Thakur <45539777+ysthakur@users.noreply.github.com> Co-authored-by: Zoltan Kiss <121870572+cj-zoltan-kiss@users.noreply.github.com> --- Cargo.lock | 25 +- Cargo.toml | 6 +- src/uu/cat/src/splice.rs | 13 +- src/uu/chcon/src/chcon.rs | 5 +- src/uu/cp/src/cp.rs | 396 +++++++++++++--------- src/uu/dd/src/parseargs.rs | 16 +- src/uu/install/src/install.rs | 12 + src/uu/ls/src/ls.rs | 3 +- src/uu/shuf/src/shuf.rs | 51 +-- src/uu/stty/src/flags.rs | 10 +- src/uu/touch/src/touch.rs | 16 +- src/uu/tr/src/operation.rs | 26 ++ src/uu/tr/src/tr.rs | 38 +-- src/uu/tty/src/tty.rs | 4 +- src/uucore/src/lib/features/pipes.rs | 4 +- src/uucore/src/lib/parser/parse_glob.rs | 11 +- tests/by-util/test_chcon.rs | 167 +++++++++ tests/by-util/test_chgrp.rs | 6 +- tests/by-util/test_cp.rs | 57 +++- tests/by-util/test_date.rs | 1 + tests/by-util/test_dd.rs | 30 ++ tests/by-util/test_install.rs | 78 ++++- tests/by-util/test_mv.rs | 2 +- tests/by-util/test_pr.rs | 5 +- tests/by-util/test_shuf.rs | 147 +++++++- tests/by-util/test_touch.rs | 41 ++- tests/fixtures/install/helloworld_freebsd | Bin 0 -> 314024 bytes 27 files changed, 896 insertions(+), 274 deletions(-) create mode 100755 tests/fixtures/install/helloworld_freebsd diff --git a/Cargo.lock b/Cargo.lock index e04687d263a..ef562bb21cf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -166,9 +166,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" dependencies = [ "arrayref", "arrayvec", @@ -236,11 +236,17 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "chrono" -version = "0.4.34" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" dependencies = [ "android-tzdata", "iana-time-zone", @@ -673,12 +679,12 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.4.1" +version = "3.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e95fbd621905b854affdc67943b043a0fbb6ed7385fd5a25650d19a8a6cfdf" +checksum = "672465ae37dc1bc6380a6547a8883d5dd397b0f1faaad4f265726cc7042a5345" dependencies = [ "nix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1303,12 +1309,13 @@ dependencies = [ [[package]] name = "nix" -version = "0.27.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ "bitflags 2.4.2", "cfg-if", + "cfg_aliases", "libc", ] diff --git a/Cargo.toml b/Cargo.toml index 959982d86e5..6e9bf95babc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -263,7 +263,7 @@ binary-heap-plus = "0.5.0" bstr = "1.9" bytecount = "0.6.7" byteorder = "1.5.0" -chrono = { version = "^0.4.34", default-features = false, features = [ +chrono = { version = "^0.4.35", default-features = false, features = [ "std", "alloc", "clock", @@ -294,7 +294,7 @@ lscolors = { version = "0.16.0", default-features = false, features = [ ] } memchr = "2" memmap2 = "0.9" -nix = { version = "0.27", default-features = false } +nix = { version = "0.28", default-features = false } nom = "7.1.3" notify = { version = "=6.0.1", features = ["macos_kqueue"] } num-bigint = "0.4.4" @@ -340,7 +340,7 @@ sha1 = "0.10.6" sha2 = "0.10.8" sha3 = "0.10.8" blake2b_simd = "1.0.2" -blake3 = "1.5.0" +blake3 = "1.5.1" sm3 = "0.4.2" digest = "0.10.7" diff --git a/src/uu/cat/src/splice.rs b/src/uu/cat/src/splice.rs index 6c2b6d3dac3..13daae84d7f 100644 --- a/src/uu/cat/src/splice.rs +++ b/src/uu/cat/src/splice.rs @@ -5,7 +5,10 @@ use super::{CatResult, FdReadable, InputHandle}; use nix::unistd; -use std::os::unix::io::{AsRawFd, RawFd}; +use std::os::{ + fd::AsFd, + unix::io::{AsRawFd, RawFd}, +}; use uucore::pipes::{pipe, splice, splice_exact}; @@ -20,9 +23,9 @@ const BUF_SIZE: usize = 1024 * 16; /// The `bool` in the result value indicates if we need to fall back to normal /// copying or not. False means we don't have to. #[inline] -pub(super) fn write_fast_using_splice( +pub(super) fn write_fast_using_splice( handle: &InputHandle, - write_fd: &impl AsRawFd, + write_fd: &S, ) -> CatResult { let (pipe_rd, pipe_wr) = pipe()?; @@ -38,7 +41,7 @@ pub(super) fn write_fast_using_splice( // we can recover by copying the data that we have from the // intermediate pipe to stdout using normal read/write. Then // we tell the caller to fall back. - copy_exact(pipe_rd.as_raw_fd(), write_fd.as_raw_fd(), n)?; + copy_exact(pipe_rd.as_raw_fd(), write_fd, n)?; return Ok(true); } } @@ -52,7 +55,7 @@ pub(super) fn write_fast_using_splice( /// Move exactly `num_bytes` bytes from `read_fd` to `write_fd`. /// /// Panics if not enough bytes can be read. -fn copy_exact(read_fd: RawFd, write_fd: RawFd, num_bytes: usize) -> nix::Result<()> { +fn copy_exact(read_fd: RawFd, write_fd: &impl AsFd, num_bytes: usize) -> nix::Result<()> { let mut left = num_bytes; let mut buf = [0; BUF_SIZE]; while left > 0 { diff --git a/src/uu/chcon/src/chcon.rs b/src/uu/chcon/src/chcon.rs index ec111c853fd..1a804bd3bbf 100644 --- a/src/uu/chcon/src/chcon.rs +++ b/src/uu/chcon/src/chcon.rs @@ -154,6 +154,7 @@ pub fn uu_app() -> Command { .override_usage(format_usage(USAGE)) .infer_long_args(true) .disable_help_flag(true) + .args_override_self(true) .arg( Arg::new(options::HELP) .long(options::HELP) @@ -163,7 +164,7 @@ pub fn uu_app() -> Command { .arg( Arg::new(options::dereference::DEREFERENCE) .long(options::dereference::DEREFERENCE) - .conflicts_with(options::dereference::NO_DEREFERENCE) + .overrides_with(options::dereference::NO_DEREFERENCE) .help( "Affect the referent of each symbolic link (this is the default), \ rather than the symbolic link itself.", @@ -180,7 +181,7 @@ pub fn uu_app() -> Command { .arg( Arg::new(options::preserve_root::PRESERVE_ROOT) .long(options::preserve_root::PRESERVE_ROOT) - .conflicts_with(options::preserve_root::NO_PRESERVE_ROOT) + .overrides_with(options::preserve_root::NO_PRESERVE_ROOT) .help("Fail to operate recursively on '/'.") .action(ArgAction::SetTrue), ) diff --git a/src/uu/cp/src/cp.rs b/src/uu/cp/src/cp.rs index 9a3a0848342..778ddf843b6 100644 --- a/src/uu/cp/src/cp.rs +++ b/src/uu/cp/src/cp.rs @@ -10,7 +10,7 @@ use std::collections::{HashMap, HashSet}; use std::env; #[cfg(not(windows))] use std::ffi::CString; -use std::fs::{self, File, OpenOptions}; +use std::fs::{self, File, Metadata, OpenOptions, Permissions}; use std::io; #[cfg(unix)] use std::os::unix::ffi::OsStrExt; @@ -780,7 +780,11 @@ impl CopyMode { { Self::Update } else if matches.get_flag(options::ATTRIBUTES_ONLY) { - Self::AttrOnly + if matches.get_flag(options::REMOVE_DESTINATION) { + Self::Copy + } else { + Self::AttrOnly + } } else { Self::Copy } @@ -1635,153 +1639,59 @@ fn aligned_ancestors<'a>(source: &'a Path, dest: &'a Path) -> Vec<(&'a Path, &'a result } -/// Copy the a file from `source` to `dest`. `source` will be dereferenced if -/// `options.dereference` is set to true. `dest` will be dereferenced only if -/// the source was not a symlink. -/// -/// Behavior when copying to existing files is contingent on the -/// `options.overwrite` mode. If a file is skipped, the return type -/// should be `Error:Skipped` -/// -/// The original permissions of `source` will be copied to `dest` -/// after a successful copy. -#[allow(clippy::cognitive_complexity)] -fn copy_file( +fn print_verbose_output( + parents: bool, progress_bar: &Option, source: &Path, dest: &Path, - options: &Options, - symlinked_files: &mut HashSet, - copied_files: &mut HashMap, - source_in_command_line: bool, -) -> CopyResult<()> { - if (options.update == UpdateMode::ReplaceIfOlder || options.update == UpdateMode::ReplaceNone) - && options.overwrite == OverwriteMode::Interactive(ClobberMode::Standard) - { - // `cp -i --update old new` when `new` exists doesn't copy anything - // and exit with 0 - return Ok(()); - } - - // Fail if dest is a dangling symlink or a symlink this program created previously - if dest.is_symlink() { - if FileInformation::from_path(dest, false) - .map(|info| symlinked_files.contains(&info)) - .unwrap_or(false) - { - return Err(Error::Error(format!( - "will not copy '{}' through just-created symlink '{}'", - source.display(), - dest.display() - ))); - } - let copy_contents = options.dereference(source_in_command_line) || !source.is_symlink(); - if copy_contents - && !dest.exists() - && !matches!( - options.overwrite, - OverwriteMode::Clobber(ClobberMode::RemoveDestination) - ) - && !is_symlink_loop(dest) - && std::env::var_os("POSIXLY_CORRECT").is_none() - { - return Err(Error::Error(format!( - "not writing through dangling symlink '{}'", - dest.display() - ))); - } - if paths_refer_to_same_file(source, dest, true) - && matches!( - options.overwrite, - OverwriteMode::Clobber(ClobberMode::RemoveDestination) - ) - { - fs::remove_file(dest)?; - } - } - - if are_hardlinks_to_same_file(source, dest) - && matches!( - options.overwrite, - OverwriteMode::Clobber(ClobberMode::RemoveDestination) - ) - { - fs::remove_file(dest)?; - } - - if file_or_link_exists(dest) { - if are_hardlinks_to_same_file(source, dest) - && !options.force() - && options.backup == BackupMode::NoBackup - && source != dest - || (source == dest && options.copy_mode == CopyMode::Link) - { - return Ok(()); - } - handle_existing_dest(source, dest, options, source_in_command_line)?; - } - - if options.preserve_hard_links() { - // if we encounter a matching device/inode pair in the source tree - // we can arrange to create a hard link between the corresponding names - // in the destination tree. - if let Some(new_source) = copied_files.get( - &FileInformation::from_path(source, options.dereference(source_in_command_line)) - .context(format!("cannot stat {}", source.quote()))?, - ) { - std::fs::hard_link(new_source, dest)?; - return Ok(()); - }; +) { + if let Some(pb) = progress_bar { + // Suspend (hide) the progress bar so the println won't overlap with the progress bar. + pb.suspend(|| { + print_paths(parents, source, dest); + }); + } else { + print_paths(parents, source, dest); } +} - if options.verbose { - if let Some(pb) = progress_bar { - // Suspend (hide) the progress bar so the println won't overlap with the progress bar. - pb.suspend(|| { - if options.parents { - // For example, if copying file `a/b/c` and its parents - // to directory `d/`, then print - // - // a -> d/a - // a/b -> d/a/b - // - for (x, y) in aligned_ancestors(source, dest) { - println!("{} -> {}", x.display(), y.display()); - } - } - - println!("{}", context_for(source, dest)); - }); - } else { - if options.parents { - // For example, if copying file `a/b/c` and its parents - // to directory `d/`, then print - // - // a -> d/a - // a/b -> d/a/b - // - for (x, y) in aligned_ancestors(source, dest) { - println!("{} -> {}", x.display(), y.display()); - } - } - - println!("{}", context_for(source, dest)); +fn print_paths(parents: bool, source: &Path, dest: &Path) { + if parents { + // For example, if copying file `a/b/c` and its parents + // to directory `d/`, then print + // + // a -> d/a + // a/b -> d/a/b + // + for (x, y) in aligned_ancestors(source, dest) { + println!("{} -> {}", x.display(), y.display()); } } - // Calculate the context upfront before canonicalizing the path - let context = context_for(source, dest); - let context = context.as_str(); + println!("{}", context_for(source, dest)); +} - let source_metadata = { - let result = if options.dereference(source_in_command_line) { - fs::metadata(source) - } else { - fs::symlink_metadata(source) - }; - result.context(context)? - }; +/// Handles the copy mode for a file copy operation. +/// +/// This function determines how to copy a file based on the provided options. +/// It supports different copy modes, including hard linking, copying, symbolic linking, updating, and attribute-only copying. +/// It also handles file backups, overwriting, and dereferencing based on the provided options. +/// +/// # Returns +/// +/// * `Ok(())` - The file was copied successfully. +/// * `Err(CopyError)` - An error occurred while copying the file. +fn handle_copy_mode( + source: &Path, + dest: &Path, + options: &Options, + context: &str, + source_metadata: Metadata, + symlinked_files: &mut HashSet, + source_in_command_line: bool, +) -> CopyResult<()> { let source_file_type = source_metadata.file_type(); + let source_is_symlink = source_file_type.is_symlink(); #[cfg(unix)] @@ -1789,24 +1699,6 @@ fn copy_file( #[cfg(not(unix))] let source_is_fifo = false; - let dest_permissions = if dest.exists() { - dest.symlink_metadata().context(context)?.permissions() - } else { - #[allow(unused_mut)] - let mut permissions = source_metadata.permissions(); - #[cfg(unix)] - { - let mut mode = handle_no_preserve_mode(options, permissions.mode()); - - // apply umask - use uucore::mode::get_umask; - mode &= !get_umask(); - - permissions.set_mode(mode); - } - permissions - }; - match options.copy_mode { CopyMode::Link => { if dest.exists() { @@ -1909,6 +1801,196 @@ fn copy_file( } }; + Ok(()) +} + +/// Calculates the permissions for the destination file in a copy operation. +/// +/// If the destination file already exists, its current permissions are returned. +/// If the destination file does not exist, the source file's permissions are used, +/// with the `no-preserve` option and the umask taken into account on Unix platforms. +/// # Returns +/// +/// * `Ok(Permissions)` - The calculated permissions for the destination file. +/// * `Err(CopyError)` - An error occurred while getting the metadata of the destination file. +/// Allow unused variables for Windows (on options) +#[allow(unused_variables)] +fn calculate_dest_permissions( + dest: &Path, + source_metadata: &Metadata, + options: &Options, + context: &str, +) -> CopyResult { + if dest.exists() { + Ok(dest.symlink_metadata().context(context)?.permissions()) + } else { + #[cfg(unix)] + { + let mut permissions = source_metadata.permissions(); + let mode = handle_no_preserve_mode(options, permissions.mode()); + + // Apply umask + use uucore::mode::get_umask; + let mode = mode & !get_umask(); + permissions.set_mode(mode); + Ok(permissions) + } + #[cfg(not(unix))] + { + let permissions = source_metadata.permissions(); + Ok(permissions) + } + } +} + +/// Copy the a file from `source` to `dest`. `source` will be dereferenced if +/// `options.dereference` is set to true. `dest` will be dereferenced only if +/// the source was not a symlink. +/// +/// Behavior when copying to existing files is contingent on the +/// `options.overwrite` mode. If a file is skipped, the return type +/// should be `Error:Skipped` +/// +/// The original permissions of `source` will be copied to `dest` +/// after a successful copy. +#[allow(clippy::cognitive_complexity)] +fn copy_file( + progress_bar: &Option, + source: &Path, + dest: &Path, + options: &Options, + symlinked_files: &mut HashSet, + copied_files: &mut HashMap, + source_in_command_line: bool, +) -> CopyResult<()> { + if (options.update == UpdateMode::ReplaceIfOlder || options.update == UpdateMode::ReplaceNone) + && options.overwrite == OverwriteMode::Interactive(ClobberMode::Standard) + { + // `cp -i --update old new` when `new` exists doesn't copy anything + // and exit with 0 + return Ok(()); + } + + // Fail if dest is a dangling symlink or a symlink this program created previously + if dest.is_symlink() { + if FileInformation::from_path(dest, false) + .map(|info| symlinked_files.contains(&info)) + .unwrap_or(false) + { + return Err(Error::Error(format!( + "will not copy '{}' through just-created symlink '{}'", + source.display(), + dest.display() + ))); + } + let copy_contents = options.dereference(source_in_command_line) || !source.is_symlink(); + if copy_contents + && !dest.exists() + && !matches!( + options.overwrite, + OverwriteMode::Clobber(ClobberMode::RemoveDestination) + ) + && !is_symlink_loop(dest) + && std::env::var_os("POSIXLY_CORRECT").is_none() + { + return Err(Error::Error(format!( + "not writing through dangling symlink '{}'", + dest.display() + ))); + } + if paths_refer_to_same_file(source, dest, true) + && matches!( + options.overwrite, + OverwriteMode::Clobber(ClobberMode::RemoveDestination) + ) + { + fs::remove_file(dest)?; + } + } + + if are_hardlinks_to_same_file(source, dest) + && matches!( + options.overwrite, + OverwriteMode::Clobber(ClobberMode::RemoveDestination) + ) + { + fs::remove_file(dest)?; + } + + if file_or_link_exists(dest) + && (!options.attributes_only + || matches!( + options.overwrite, + OverwriteMode::Clobber(ClobberMode::RemoveDestination) + )) + { + if are_hardlinks_to_same_file(source, dest) + && !options.force() + && options.backup == BackupMode::NoBackup + && source != dest + || (source == dest && options.copy_mode == CopyMode::Link) + { + return Ok(()); + } + handle_existing_dest(source, dest, options, source_in_command_line)?; + } + + if options.attributes_only + && source.is_symlink() + && !matches!( + options.overwrite, + OverwriteMode::Clobber(ClobberMode::RemoveDestination) + ) + { + return Err(format!( + "cannot change attribute {}: Source file is a non regular file", + dest.quote() + ) + .into()); + } + + if options.preserve_hard_links() { + // if we encounter a matching device/inode pair in the source tree + // we can arrange to create a hard link between the corresponding names + // in the destination tree. + if let Some(new_source) = copied_files.get( + &FileInformation::from_path(source, options.dereference(source_in_command_line)) + .context(format!("cannot stat {}", source.quote()))?, + ) { + std::fs::hard_link(new_source, dest)?; + return Ok(()); + }; + } + + if options.verbose { + print_verbose_output(options.parents, progress_bar, source, dest); + } + + // Calculate the context upfront before canonicalizing the path + let context = context_for(source, dest); + let context = context.as_str(); + + let source_metadata = { + let result = if options.dereference(source_in_command_line) { + fs::metadata(source) + } else { + fs::symlink_metadata(source) + }; + result.context(context)? + }; + + let dest_permissions = calculate_dest_permissions(dest, &source_metadata, options, context)?; + + handle_copy_mode( + source, + dest, + options, + context, + source_metadata, + symlinked_files, + source_in_command_line, + )?; + // TODO: implement something similar to gnu's lchown if !dest.is_symlink() { // Here, to match GNU semantics, we quietly ignore an error diff --git a/src/uu/dd/src/parseargs.rs b/src/uu/dd/src/parseargs.rs index 9b3e3911eeb..93d6c63a97d 100644 --- a/src/uu/dd/src/parseargs.rs +++ b/src/uu/dd/src/parseargs.rs @@ -275,7 +275,7 @@ impl Parser { fn parse_n(val: &str) -> Result { let n = parse_bytes_with_opt_multiplier(val)?; - Ok(if val.ends_with('B') { + Ok(if val.contains('B') { Num::Bytes(n) } else { Num::Blocks(n) @@ -631,8 +631,9 @@ fn conversion_mode( #[cfg(test)] mod tests { - use crate::parseargs::parse_bytes_with_opt_multiplier; - + use crate::parseargs::{parse_bytes_with_opt_multiplier, Parser}; + use crate::Num; + use std::matches; const BIG: &str = "9999999999999999999999999999999999999999999999999999999999999"; #[test] @@ -659,4 +660,13 @@ mod tests { 2 * 2 * (3 * 2) // (1 * 2) * (2 * 1) * (3 * 2) ); } + #[test] + fn test_parse_n() { + for arg in ["1x8x4", "1c", "123b", "123w"] { + assert!(matches!(Parser::parse_n(arg), Ok(Num::Blocks(_)))); + } + for arg in ["1Bx8x4", "2Bx8", "2Bx8B", "2x8B"] { + assert!(matches!(Parser::parse_n(arg), Ok(Num::Bytes(_)))); + } + } } diff --git a/src/uu/install/src/install.rs b/src/uu/install/src/install.rs index 9955be7b292..331a50f6741 100644 --- a/src/uu/install/src/install.rs +++ b/src/uu/install/src/install.rs @@ -748,6 +748,18 @@ fn perform_backup(to: &Path, b: &Behavior) -> UResult> { /// Returns an empty Result or an error in case of failure. /// fn copy_file(from: &Path, to: &Path) -> UResult<()> { + // fs::copy fails if destination is a invalid symlink. + // so lets just remove all existing files at destination before copy. + if let Err(e) = fs::remove_file(to) { + if e.kind() != std::io::ErrorKind::NotFound { + show_error!( + "Failed to remove existing file {}. Error: {:?}", + to.display(), + e + ); + } + } + if from.as_os_str() == "/dev/null" { /* workaround a limitation of fs::copy * https://github.com/rust-lang/rust/issues/79390 diff --git a/src/uu/ls/src/ls.rs b/src/uu/ls/src/ls.rs index 12810d847ad..333360f50ec 100644 --- a/src/uu/ls/src/ls.rs +++ b/src/uu/ls/src/ls.rs @@ -2981,7 +2981,8 @@ fn display_date(metadata: &Metadata, config: &Config) -> String { Some(time) => { //Date is recent if from past 6 months //According to GNU a Gregorian year has 365.2425 * 24 * 60 * 60 == 31556952 seconds on the average. - let recent = time + chrono::TimeDelta::seconds(31_556_952 / 2) > chrono::Local::now(); + let recent = time + chrono::TimeDelta::try_seconds(31_556_952 / 2).unwrap() + > chrono::Local::now(); match &config.time_style { TimeStyle::FullIso => time.format("%Y-%m-%d %H:%M:%S.%f %z"), diff --git a/src/uu/shuf/src/shuf.rs b/src/uu/shuf/src/shuf.rs index 9ee04826b48..40028c2fb5e 100644 --- a/src/uu/shuf/src/shuf.rs +++ b/src/uu/shuf/src/shuf.rs @@ -12,6 +12,7 @@ use rand::{Rng, RngCore}; use std::collections::HashSet; use std::fs::File; use std::io::{stdin, stdout, BufReader, BufWriter, Error, Read, Write}; +use std::ops::RangeInclusive; use uucore::display::Quotable; use uucore::error::{FromIo, UResult, USimpleError, UUsageError}; use uucore::{format_usage, help_about, help_usage}; @@ -21,7 +22,7 @@ mod rand_read_adapter; enum Mode { Default(String), Echo(Vec), - InputRange((usize, usize)), + InputRange(RangeInclusive), } static USAGE: &str = help_usage!("shuf.md"); @@ -119,8 +120,8 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { find_seps(&mut evec, options.sep); shuf_exec(&mut evec, options)?; } - Mode::InputRange((b, e)) => { - shuf_exec(&mut (b, e), options)?; + Mode::InputRange(mut range) => { + shuf_exec(&mut range, options)?; } Mode::Default(filename) => { let fdata = read_input_file(&filename)?; @@ -289,14 +290,13 @@ impl<'a> Shufable for Vec<&'a [u8]> { } } -impl Shufable for (usize, usize) { +impl Shufable for RangeInclusive { type Item = usize; fn is_empty(&self) -> bool { - // Note: This is an inclusive range, so equality means there is 1 element. - self.0 > self.1 + self.is_empty() } fn choose(&self, rng: &mut WrappedRng) -> usize { - rng.gen_range(self.0..self.1) + rng.gen_range(self.clone()) } type PartialShuffleIterator<'b> = NonrepeatingIterator<'b> where Self: 'b; fn partial_shuffle<'b>( @@ -304,7 +304,7 @@ impl Shufable for (usize, usize) { rng: &'b mut WrappedRng, amount: usize, ) -> Self::PartialShuffleIterator<'b> { - NonrepeatingIterator::new(self.0, self.1, rng, amount) + NonrepeatingIterator::new(self.clone(), rng, amount) } } @@ -314,8 +314,7 @@ enum NumberSet { } struct NonrepeatingIterator<'a> { - begin: usize, - end: usize, // exclusive + range: RangeInclusive, rng: &'a mut WrappedRng, remaining_count: usize, buf: NumberSet, @@ -323,19 +322,19 @@ struct NonrepeatingIterator<'a> { impl<'a> NonrepeatingIterator<'a> { fn new( - begin: usize, - end: usize, + range: RangeInclusive, rng: &'a mut WrappedRng, amount: usize, ) -> NonrepeatingIterator { - let capped_amount = if begin > end { + let capped_amount = if range.start() > range.end() { 0 + } else if *range.start() == 0 && *range.end() == std::usize::MAX { + amount } else { - amount.min(end - begin) + amount.min(range.end() - range.start() + 1) }; NonrepeatingIterator { - begin, - end, + range, rng, remaining_count: capped_amount, buf: NumberSet::AlreadyListed(HashSet::default()), @@ -343,11 +342,11 @@ impl<'a> NonrepeatingIterator<'a> { } fn produce(&mut self) -> usize { - debug_assert!(self.begin <= self.end); + debug_assert!(self.range.start() <= self.range.end()); match &mut self.buf { NumberSet::AlreadyListed(already_listed) => { let chosen = loop { - let guess = self.rng.gen_range(self.begin..self.end); + let guess = self.rng.gen_range(self.range.clone()); let newly_inserted = already_listed.insert(guess); if newly_inserted { break guess; @@ -356,9 +355,11 @@ impl<'a> NonrepeatingIterator<'a> { // Once a significant fraction of the interval has already been enumerated, // the number of attempts to find a number that hasn't been chosen yet increases. // Therefore, we need to switch at some point from "set of already returned values" to "list of remaining values". - let range_size = self.end - self.begin; + let range_size = (self.range.end() - self.range.start()).saturating_add(1); if number_set_should_list_remaining(already_listed.len(), range_size) { - let mut remaining = (self.begin..self.end) + let mut remaining = self + .range + .clone() .filter(|n| !already_listed.contains(n)) .collect::>(); assert!(remaining.len() >= self.remaining_count); @@ -381,7 +382,7 @@ impl<'a> Iterator for NonrepeatingIterator<'a> { type Item = usize; fn next(&mut self) -> Option { - if self.begin > self.end || self.remaining_count == 0 { + if self.range.is_empty() || self.remaining_count == 0 { return None; } self.remaining_count -= 1; @@ -462,7 +463,7 @@ fn shuf_exec(input: &mut impl Shufable, opts: Options) -> UResult<()> { Ok(()) } -fn parse_range(input_range: &str) -> Result<(usize, usize), String> { +fn parse_range(input_range: &str) -> Result, String> { if let Some((from, to)) = input_range.split_once('-') { let begin = from .parse::() @@ -470,7 +471,11 @@ fn parse_range(input_range: &str) -> Result<(usize, usize), String> { let end = to .parse::() .map_err(|_| format!("invalid input range: {}", to.quote()))?; - Ok((begin, end + 1)) + if begin <= end || begin == end + 1 { + Ok(begin..=end) + } else { + Err(format!("invalid input range: {}", input_range.quote())) + } } else { Err(format!("invalid input range: {}", input_range.quote())) } diff --git a/src/uu/stty/src/flags.rs b/src/uu/stty/src/flags.rs index 2c8e154e8b1..eac57151be9 100644 --- a/src/uu/stty/src/flags.rs +++ b/src/uu/stty/src/flags.rs @@ -5,7 +5,7 @@ // spell-checker:ignore parenb parodd cmspar hupcl cstopb cread clocal crtscts CSIZE // spell-checker:ignore ignbrk brkint ignpar parmrk inpck istrip inlcr igncr icrnl ixoff ixon iuclc ixany imaxbel iutf -// spell-checker:ignore opost olcuc ocrnl onlcr onocr onlret ofill ofdel nldly crdly tabdly bsdly vtdly ffdly +// spell-checker:ignore opost olcuc ocrnl onlcr onocr onlret ofdel nldly crdly tabdly bsdly vtdly ffdly // spell-checker:ignore isig icanon iexten echoe crterase echok echonl noflsh xcase tostop echoprt prterase echoctl ctlecho echoke crtkill flusho extproc // spell-checker:ignore lnext rprnt susp swtch vdiscard veof veol verase vintr vkill vlnext vquit vreprint vstart vstop vsusp vswtc vwerase werase // spell-checker:ignore sigquit sigtstp @@ -86,14 +86,6 @@ pub const OUTPUT_FLAGS: &[Flag] = &[ target_os = "linux", target_os = "macos" ))] - Flag::new("ofill", O::OFILL), - #[cfg(any( - target_os = "android", - target_os = "haiku", - target_os = "ios", - target_os = "linux", - target_os = "macos" - ))] Flag::new("ofdel", O::OFDEL), #[cfg(any( target_os = "android", diff --git a/src/uu/touch/src/touch.rs b/src/uu/touch/src/touch.rs index ebdff8d2116..fe1783b214a 100644 --- a/src/uu/touch/src/touch.rs +++ b/src/uu/touch/src/touch.rs @@ -326,12 +326,12 @@ fn update_times( // If `follow` is `true`, the function will try to follow symlinks // If `follow` is `false` or the symlink is broken, the function will return metadata of the symlink itself fn stat(path: &Path, follow: bool) -> UResult<(FileTime, FileTime)> { - let metadata = match fs::metadata(path) { - Ok(metadata) => metadata, - Err(e) if e.kind() == std::io::ErrorKind::NotFound && !follow => fs::symlink_metadata(path) - .map_err_context(|| format!("failed to get attributes of {}", path.quote()))?, - Err(e) => return Err(e.into()), - }; + let metadata = if follow { + fs::metadata(path).or_else(|_| fs::symlink_metadata(path)) + } else { + fs::symlink_metadata(path) + } + .map_err_context(|| format!("failed to get attributes of {}", path.quote()))?; Ok(( FileTime::from_last_access_time(&metadata), @@ -433,7 +433,7 @@ fn parse_timestamp(s: &str) -> UResult { // only care about the timestamp anyway. // Tested in gnu/tests/touch/60-seconds if local.second() == 59 && ts.ends_with(".60") { - local += Duration::seconds(1); + local += Duration::try_seconds(1).unwrap(); } // Due to daylight saving time switch, local time can jump from 1:59 AM to @@ -441,7 +441,7 @@ fn parse_timestamp(s: &str) -> UResult { // valid. If we are within this jump, chrono takes the offset from before // the jump. If we then jump forward an hour, we get the new corrected // offset. Jumping back will then now correctly take the jump into account. - let local2 = local + Duration::hours(1) - Duration::hours(1); + let local2 = local + Duration::try_hours(1).unwrap() - Duration::try_hours(1).unwrap(); if local.hour() != local2.hour() { return Err(USimpleError::new( 1, diff --git a/src/uu/tr/src/operation.rs b/src/uu/tr/src/operation.rs index 5565de6a16d..cfc9b11cb91 100644 --- a/src/uu/tr/src/operation.rs +++ b/src/uu/tr/src/operation.rs @@ -339,6 +339,32 @@ impl Sequence { pub trait SymbolTranslator { fn translate(&mut self, current: u8) -> Option; + + /// Takes two SymbolTranslators and creates a new SymbolTranslator over both in sequence. + /// + /// This behaves pretty much identical to [`Iterator::chain`]. + fn chain(self, other: T) -> ChainedSymbolTranslator + where + Self: Sized, + { + ChainedSymbolTranslator:: { + stage_a: self, + stage_b: other, + } + } +} + +pub struct ChainedSymbolTranslator { + stage_a: A, + stage_b: B, +} + +impl SymbolTranslator for ChainedSymbolTranslator { + fn translate(&mut self, current: u8) -> Option { + self.stage_a + .translate(current) + .and_then(|c| self.stage_b.translate(c)) + } } #[derive(Debug)] diff --git a/src/uu/tr/src/tr.rs b/src/uu/tr/src/tr.rs index 968682a264b..6f78f13db94 100644 --- a/src/uu/tr/src/tr.rs +++ b/src/uu/tr/src/tr.rs @@ -9,9 +9,10 @@ mod operation; mod unicode_table; use clap::{crate_version, Arg, ArgAction, Command}; -use nom::AsBytes; -use operation::{translate_input, Sequence, SqueezeOperation, TranslateOperation}; -use std::io::{stdin, stdout, BufReader, BufWriter}; +use operation::{ + translate_input, Sequence, SqueezeOperation, SymbolTranslator, TranslateOperation, +}; +use std::io::{stdin, stdout, BufWriter}; use uucore::{format_usage, help_about, help_section, help_usage, show}; use crate::operation::DeleteOperation; @@ -117,19 +118,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { truncate_set1_flag, )?; + // '*_op' are the operations that need to be applied, in order. if delete_flag { if squeeze_flag { - let mut delete_buffer = vec![]; - { - let mut delete_writer = BufWriter::new(&mut delete_buffer); - let delete_op = DeleteOperation::new(set1, complement_flag); - translate_input(&mut locked_stdin, &mut delete_writer, delete_op); - } - { - let mut squeeze_reader = BufReader::new(delete_buffer.as_bytes()); - let op = SqueezeOperation::new(set2, false); - translate_input(&mut squeeze_reader, &mut buffered_stdout, op); - } + let delete_op = DeleteOperation::new(set1, complement_flag); + let squeeze_op = SqueezeOperation::new(set2, false); + let op = delete_op.chain(squeeze_op); + translate_input(&mut locked_stdin, &mut buffered_stdout, op); } else { let op = DeleteOperation::new(set1, complement_flag); translate_input(&mut locked_stdin, &mut buffered_stdout, op); @@ -139,17 +134,10 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let op = SqueezeOperation::new(set1, complement_flag); translate_input(&mut locked_stdin, &mut buffered_stdout, op); } else { - let mut translate_buffer = vec![]; - { - let mut writer = BufWriter::new(&mut translate_buffer); - let op = TranslateOperation::new(set1, set2.clone(), complement_flag)?; - translate_input(&mut locked_stdin, &mut writer, op); - } - { - let mut reader = BufReader::new(translate_buffer.as_bytes()); - let squeeze_op = SqueezeOperation::new(set2, false); - translate_input(&mut reader, &mut buffered_stdout, squeeze_op); - } + let translate_op = TranslateOperation::new(set1, set2.clone(), complement_flag)?; + let squeeze_op = SqueezeOperation::new(set2, false); + let op = translate_op.chain(squeeze_op); + translate_input(&mut locked_stdin, &mut buffered_stdout, op); } } else { let op = TranslateOperation::new(set1, set2, complement_flag)?; diff --git a/src/uu/tty/src/tty.rs b/src/uu/tty/src/tty.rs index efda4a7becc..b7d3aedcd22 100644 --- a/src/uu/tty/src/tty.rs +++ b/src/uu/tty/src/tty.rs @@ -9,7 +9,6 @@ use clap::{crate_version, Arg, ArgAction, Command}; use std::io::{IsTerminal, Write}; -use std::os::unix::io::AsRawFd; use uucore::error::{set_exit_code, UResult}; use uucore::{format_usage, help_about, help_usage}; @@ -37,8 +36,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let mut stdout = std::io::stdout(); - // Get the ttyname via nix - let name = nix::unistd::ttyname(std::io::stdin().as_raw_fd()); + let name = nix::unistd::ttyname(std::io::stdin()); let write_result = match name { Ok(name) => writeln!(stdout, "{}", name.display()), diff --git a/src/uucore/src/lib/features/pipes.rs b/src/uucore/src/lib/features/pipes.rs index 75749f72148..17c5b1b3245 100644 --- a/src/uucore/src/lib/features/pipes.rs +++ b/src/uucore/src/lib/features/pipes.rs @@ -8,7 +8,6 @@ use std::fs::File; use std::io::IoSlice; #[cfg(any(target_os = "linux", target_os = "android"))] use std::os::unix::io::AsRawFd; -use std::os::unix::io::FromRawFd; #[cfg(any(target_os = "linux", target_os = "android"))] use nix::fcntl::SpliceFFlags; @@ -21,8 +20,7 @@ pub use nix::{Error, Result}; /// from the first. pub fn pipe() -> Result<(File, File)> { let (read, write) = nix::unistd::pipe()?; - // SAFETY: The file descriptors do not have other owners. - unsafe { Ok((File::from_raw_fd(read), File::from_raw_fd(write))) } + Ok((File::from(read), File::from(write))) } /// Less noisy wrapper around [`nix::fcntl::splice`]. diff --git a/src/uucore/src/lib/parser/parse_glob.rs b/src/uucore/src/lib/parser/parse_glob.rs index 9215dd7bf7d..a4e12f467a0 100644 --- a/src/uucore/src/lib/parser/parse_glob.rs +++ b/src/uucore/src/lib/parser/parse_glob.rs @@ -18,7 +18,11 @@ fn fix_negation(glob: &str) -> String { while i + 3 < chars.len() { if chars[i] == '[' && chars[i + 1] == '^' { match chars[i + 3..].iter().position(|x| *x == ']') { - None => (), + None => { + // if closing square bracket not found, stop looking for it + // again + break; + } Some(j) => { chars[i + 1] = '!'; i += j + 4; @@ -90,6 +94,11 @@ mod tests { assert_eq!(fix_negation("[[]] [^a]"), "[[]] [!a]"); assert_eq!(fix_negation("[[] [^a]"), "[[] [!a]"); assert_eq!(fix_negation("[]] [^a]"), "[]] [!a]"); + + // test that we don't look for closing square brackets unnecessarily + // Verifies issue #5584 + let chars = std::iter::repeat("^[").take(174571).collect::(); + assert_eq!(fix_negation(chars.as_str()), chars); } #[test] diff --git a/tests/by-util/test_chcon.rs b/tests/by-util/test_chcon.rs index 71405e451d0..a8dae9aed06 100644 --- a/tests/by-util/test_chcon.rs +++ b/tests/by-util/test_chcon.rs @@ -88,6 +88,33 @@ fn valid_context_on_valid_symlink() { assert_eq!(get_file_context(dir.plus("a.tmp")).unwrap(), a_context); } +#[test] +fn valid_context_on_valid_symlink_override_dereference() { + let (dir, mut cmd) = at_and_ucmd!(); + dir.touch("a.tmp"); + dir.symlink_file("a.tmp", "la.tmp"); + + let a_context = get_file_context(dir.plus("a.tmp")).unwrap(); + let la_context = get_file_context(dir.plus("la.tmp")).unwrap(); + let new_a_context = "guest_u:object_r:etc_t:s0:c42"; + assert_ne!(a_context.as_deref(), Some(new_a_context)); + assert_ne!(la_context.as_deref(), Some(new_a_context)); + + cmd.args(&[ + "--verbose", + "--no-dereference", + "--dereference", + new_a_context, + ]) + .arg(dir.plus("la.tmp")) + .succeeds(); + assert_eq!( + get_file_context(dir.plus("a.tmp")).unwrap().as_deref(), + Some(new_a_context) + ); + assert_eq!(get_file_context(dir.plus("la.tmp")).unwrap(), la_context); +} + #[test] fn valid_context_on_broken_symlink() { let (dir, mut cmd) = at_and_ucmd!(); @@ -104,6 +131,29 @@ fn valid_context_on_broken_symlink() { ); } +#[test] +fn valid_context_on_broken_symlink_after_deref() { + let (dir, mut cmd) = at_and_ucmd!(); + dir.symlink_file("a.tmp", "la.tmp"); + + let la_context = get_file_context(dir.plus("la.tmp")).unwrap(); + let new_la_context = "guest_u:object_r:etc_t:s0:c42"; + assert_ne!(la_context.as_deref(), Some(new_la_context)); + + cmd.args(&[ + "--verbose", + "--dereference", + "--no-dereference", + new_la_context, + ]) + .arg(dir.plus("la.tmp")) + .succeeds(); + assert_eq!( + get_file_context(dir.plus("la.tmp")).unwrap().as_deref(), + Some(new_la_context) + ); +} + #[test] fn valid_context_with_prior_xattributes() { let (dir, mut cmd) = at_and_ucmd!(); @@ -324,6 +374,30 @@ fn user_change() { ); } +#[test] +fn user_change_repeated() { + let (dir, mut cmd) = at_and_ucmd!(); + + dir.touch("a.tmp"); + let a_context = get_file_context(dir.plus("a.tmp")).unwrap(); + let new_a_context = if let Some(a_context) = a_context { + let mut components: Vec<_> = a_context.split(':').collect(); + components[0] = "guest_u"; + components.join(":") + } else { + set_file_context(dir.plus("a.tmp"), "unconfined_u:object_r:user_tmp_t:s0").unwrap(); + String::from("guest_u:object_r:user_tmp_t:s0") + }; + + cmd.args(&["--verbose", "--user=wrong", "--user=guest_u"]) + .arg(dir.plus("a.tmp")) + .succeeds(); + assert_eq!( + get_file_context(dir.plus("a.tmp")).unwrap(), + Some(new_a_context) + ); +} + #[test] fn role_change() { let (dir, mut cmd) = at_and_ucmd!(); @@ -421,6 +495,99 @@ fn valid_reference() { ); } +#[test] +fn valid_reference_repeat_flags() { + let (dir, mut cmd) = at_and_ucmd!(); + + dir.touch("a.tmp"); + let new_a_context = "guest_u:object_r:etc_t:s0:c42"; + set_file_context(dir.plus("a.tmp"), new_a_context).unwrap(); + + dir.touch("b.tmp"); + let b_context = get_file_context(dir.plus("b.tmp")).unwrap(); + assert_ne!(b_context.as_deref(), Some(new_a_context)); + + cmd.arg("--verbose") + .arg("-vvRRHHLLPP") // spell-checker:disable-line + .arg("--no-preserve-root") + .arg("--no-preserve-root") + .arg("--preserve-root") + .arg("--preserve-root") + .arg("--dereference") + .arg("--dereference") + .arg("--no-dereference") + .arg("--no-dereference") + .arg(format!("--reference={}", dir.plus_as_string("a.tmp"))) + .arg(dir.plus("b.tmp")) + .succeeds(); + assert_eq!( + get_file_context(dir.plus("b.tmp")).unwrap().as_deref(), + Some(new_a_context) + ); +} + +#[test] +fn valid_reference_repeated_reference() { + let (dir, mut cmd) = at_and_ucmd!(); + + dir.touch("a.tmp"); + let new_a_context = "guest_u:object_r:etc_t:s0:c42"; + set_file_context(dir.plus("a.tmp"), new_a_context).unwrap(); + + dir.touch("wrong.tmp"); + let new_wrong_context = "guest_u:object_r:etc_t:s42:c0"; + set_file_context(dir.plus("wrong.tmp"), new_wrong_context).unwrap(); + + dir.touch("b.tmp"); + let b_context = get_file_context(dir.plus("b.tmp")).unwrap(); + assert_ne!(b_context.as_deref(), Some(new_a_context)); + + cmd.arg("--verbose") + .arg(format!("--reference={}", dir.plus_as_string("wrong.tmp"))) + .arg(format!("--reference={}", dir.plus_as_string("a.tmp"))) + .arg(dir.plus("b.tmp")) + .succeeds(); + assert_eq!( + get_file_context(dir.plus("b.tmp")).unwrap().as_deref(), + Some(new_a_context) + ); + assert_eq!( + get_file_context(dir.plus("wrong.tmp")).unwrap().as_deref(), + Some(new_wrong_context) + ); +} + +#[test] +fn valid_reference_multi() { + let (dir, mut cmd) = at_and_ucmd!(); + + dir.touch("a.tmp"); + let new_a_context = "guest_u:object_r:etc_t:s0:c42"; + set_file_context(dir.plus("a.tmp"), new_a_context).unwrap(); + + dir.touch("b1.tmp"); + let b1_context = get_file_context(dir.plus("b1.tmp")).unwrap(); + assert_ne!(b1_context.as_deref(), Some(new_a_context)); + + dir.touch("b2.tmp"); + let b2_context = get_file_context(dir.plus("b2.tmp")).unwrap(); + assert_ne!(b2_context.as_deref(), Some(new_a_context)); + + cmd.arg("--verbose") + .arg(format!("--reference={}", dir.plus_as_string("a.tmp"))) + .arg(dir.plus("b1.tmp")) + .arg(dir.plus("b2.tmp")) + .succeeds(); + assert_eq!( + get_file_context(dir.plus("b1.tmp")).unwrap().as_deref(), + Some(new_a_context) + ); + assert_eq!( + get_file_context(dir.plus("b2.tmp")).unwrap().as_deref(), + Some(new_a_context) + ); +} + fn get_file_context(path: impl AsRef) -> Result, selinux::errors::Error> { let path = path.as_ref(); match selinux::SecurityContext::of_path(path, false, false) { diff --git a/tests/by-util/test_chgrp.rs b/tests/by-util/test_chgrp.rs index be364d1f623..eca5ba0edff 100644 --- a/tests/by-util/test_chgrp.rs +++ b/tests/by-util/test_chgrp.rs @@ -124,10 +124,8 @@ fn test_preserve_root_symlink() { ] { let (at, mut ucmd) = at_and_ucmd!(); at.symlink_file(d, file); - let expected_error = format!( - "chgrp: it is dangerous to operate recursively on 'test_chgrp_symlink2root' (same as '/')\nchgrp: use --no-preserve-root to override this failsafe\n", - //d, - ); + let expected_error = + "chgrp: it is dangerous to operate recursively on 'test_chgrp_symlink2root' (same as '/')\nchgrp: use --no-preserve-root to override this failsafe\n"; ucmd.arg("--preserve-root") .arg("-HR") .arg("bin") diff --git a/tests/by-util/test_cp.rs b/tests/by-util/test_cp.rs index d3cee58adc9..fc955db4c92 100644 --- a/tests/by-util/test_cp.rs +++ b/tests/by-util/test_cp.rs @@ -3781,7 +3781,7 @@ fn test_acl_preserve() { // calling the command directly. xattr requires some dev packages to be installed // and it adds a complex dependency just for a test match Command::new("setfacl") - .args(["-m", "group::rwx", &path1]) + .args(["-m", "group::rwx", path1]) .status() .map(|status| status.code()) { @@ -3800,3 +3800,58 @@ fn test_acl_preserve() { assert!(compare_xattrs(&file, &file_target)); } + +#[test] +fn test_cp_force_remove_destination_attributes_only_with_symlink() { + let scene = TestScenario::new(util_name!()); + let at = &scene.fixtures; + + at.write("file1", "1"); + at.write("file2", "2"); + at.symlink_file("file1", "sym1"); + + scene + .ucmd() + .args(&[ + "-a", + "--remove-destination", + "--attributes-only", + "sym1", + "file2", + ]) + .succeeds(); + + assert!( + at.symlink_exists("file2"), + "file2 is not a symbolic link as expected" + ); + + assert_eq!( + at.read("file1"), + at.read("file2"), + "Contents of file1 and file2 do not match" + ); +} + +#[test] +fn test_cp_no_dereference_attributes_only_with_symlink() { + let scene = TestScenario::new(util_name!()); + let at = &scene.fixtures; + at.write("file1", "1"); + at.write("file2", "2"); + at.write("file2.exp", "2"); + at.symlink_file("file1", "sym1"); + + let result = scene + .ucmd() + .args(&["--no-dereference", "--attributes-only", "sym1", "file2"]) + .fails(); + + assert_eq!(result.code(), 1, "cp command did not fail"); + + assert_eq!( + at.read("file2"), + at.read("file2.exp"), + "file2 content does not match expected" + ); +} diff --git a/tests/by-util/test_date.rs b/tests/by-util/test_date.rs index a65f02fa4c7..def3fa8af00 100644 --- a/tests/by-util/test_date.rs +++ b/tests/by-util/test_date.rs @@ -294,6 +294,7 @@ fn test_date_for_no_permission_file() { use std::os::unix::fs::PermissionsExt; let file = std::fs::OpenOptions::new() .create(true) + .truncate(true) .write(true) .open(at.plus(FILE)) .unwrap(); diff --git a/tests/by-util/test_dd.rs b/tests/by-util/test_dd.rs index 24aa6bfdf23..401a5c5ef70 100644 --- a/tests/by-util/test_dd.rs +++ b/tests/by-util/test_dd.rs @@ -1405,6 +1405,36 @@ fn test_bytes_suffix() { .stdout_only("\0\0\0abcdef"); } +#[test] +// the recursive nature of the suffix allows any string with a 'B' in it treated as bytes. +fn test_bytes_suffix_recursive() { + new_ucmd!() + .args(&["count=2Bx2", "status=none"]) + .pipe_in("abcdef") + .succeeds() + .stdout_only("abcd"); + new_ucmd!() + .args(&["skip=2Bx2", "status=none"]) + .pipe_in("abcdef") + .succeeds() + .stdout_only("ef"); + new_ucmd!() + .args(&["iseek=2Bx2", "status=none"]) + .pipe_in("abcdef") + .succeeds() + .stdout_only("ef"); + new_ucmd!() + .args(&["seek=2Bx2", "status=none"]) + .pipe_in("abcdef") + .succeeds() + .stdout_only("\0\0\0\0abcdef"); + new_ucmd!() + .args(&["oseek=2Bx2", "status=none"]) + .pipe_in("abcdef") + .succeeds() + .stdout_only("\0\0\0\0abcdef"); +} + /// Test for "conv=sync" with a slow reader. #[cfg(not(windows))] #[test] diff --git a/tests/by-util/test_install.rs b/tests/by-util/test_install.rs index 6b1d76e5527..5790c685fc2 100644 --- a/tests/by-util/test_install.rs +++ b/tests/by-util/test_install.rs @@ -8,7 +8,7 @@ use crate::common::util::{is_ci, run_ucmd_as_root, TestScenario}; use filetime::FileTime; use std::fs; use std::os::unix::fs::{MetadataExt, PermissionsExt}; -#[cfg(not(any(windows, target_os = "freebsd")))] +#[cfg(not(windows))] use std::process::Command; #[cfg(any(target_os = "linux", target_os = "android"))] use std::thread::sleep; @@ -610,13 +610,17 @@ fn test_install_copy_then_compare_file_with_extra_mode() { } const STRIP_TARGET_FILE: &str = "helloworld_installed"; -#[cfg(not(any(windows, target_os = "freebsd")))] +#[cfg(all(not(windows), not(target_os = "freebsd")))] const SYMBOL_DUMP_PROGRAM: &str = "objdump"; -#[cfg(not(any(windows, target_os = "freebsd")))] +#[cfg(target_os = "freebsd")] +const SYMBOL_DUMP_PROGRAM: &str = "llvm-objdump"; +#[cfg(not(windows))] const STRIP_SOURCE_FILE_SYMBOL: &str = "main"; fn strip_source_file() -> &'static str { - if cfg!(target_os = "macos") { + if cfg!(target_os = "freebsd") { + "helloworld_freebsd" + } else if cfg!(target_os = "macos") { "helloworld_macos" } else if cfg!(target_arch = "arm") || cfg!(target_arch = "aarch64") { "helloworld_android" @@ -626,8 +630,7 @@ fn strip_source_file() -> &'static str { } #[test] -// FixME: Freebsd fails on 'No such file or directory' -#[cfg(not(any(windows, target_os = "freebsd")))] +#[cfg(not(windows))] fn test_install_and_strip() { let scene = TestScenario::new(util_name!()); let at = &scene.fixtures; @@ -650,8 +653,7 @@ fn test_install_and_strip() { } #[test] -// FixME: Freebsd fails on 'No such file or directory' -#[cfg(not(any(windows, target_os = "freebsd")))] +#[cfg(not(windows))] fn test_install_and_strip_with_program() { let scene = TestScenario::new(util_name!()); let at = &scene.fixtures; @@ -677,8 +679,6 @@ fn test_install_and_strip_with_program() { #[cfg(all(unix, feature = "chmod"))] #[test] -// FixME: Freebsd fails on 'No such file or directory' -#[cfg(not(target_os = "freebsd"))] fn test_install_and_strip_with_program_hyphen() { let scene = TestScenario::new(util_name!()); @@ -715,6 +715,64 @@ fn test_install_and_strip_with_program_hyphen() { .stdout_is("./-dest\n"); } +#[cfg(all(unix, feature = "chmod"))] +#[test] +fn test_install_on_invalid_link_at_destination() { + let scene = TestScenario::new(util_name!()); + + let at = &scene.fixtures; + at.mkdir("src"); + at.mkdir("dest"); + let src_dir = at.plus("src"); + let dst_dir = at.plus("dest"); + + at.touch("test.sh"); + at.symlink_file( + "/opt/FakeDestination", + &dst_dir.join("test.sh").to_string_lossy(), + ); + scene.ccmd("chmod").arg("+x").arg("test.sh").succeeds(); + at.symlink_file("test.sh", &src_dir.join("test.sh").to_string_lossy()); + + scene + .ucmd() + .current_dir(&src_dir) + .arg(src_dir.join("test.sh")) + .arg(dst_dir.join("test.sh")) + .succeeds() + .no_stderr() + .no_stdout(); +} + +#[cfg(all(unix, feature = "chmod"))] +#[test] +fn test_install_on_invalid_link_at_destination_and_dev_null_at_source() { + let scene = TestScenario::new(util_name!()); + + let at = &scene.fixtures; + at.mkdir("src"); + at.mkdir("dest"); + let src_dir = at.plus("src"); + let dst_dir = at.plus("dest"); + + at.touch("test.sh"); + at.symlink_file( + "/opt/FakeDestination", + &dst_dir.join("test.sh").to_string_lossy(), + ); + scene.ccmd("chmod").arg("+x").arg("test.sh").succeeds(); + at.symlink_file("test.sh", &src_dir.join("test.sh").to_string_lossy()); + + scene + .ucmd() + .current_dir(&src_dir) + .arg("/dev/null") + .arg(dst_dir.join("test.sh")) + .succeeds() + .no_stderr() + .no_stdout(); +} + #[test] #[cfg(not(windows))] fn test_install_and_strip_with_invalid_program() { diff --git a/tests/by-util/test_mv.rs b/tests/by-util/test_mv.rs index dd05ffbcd0a..a53d7277bd9 100644 --- a/tests/by-util/test_mv.rs +++ b/tests/by-util/test_mv.rs @@ -1590,7 +1590,7 @@ fn test_acl() { // calling the command directly. xattr requires some dev packages to be installed // and it adds a complex dependency just for a test match Command::new("setfacl") - .args(["-m", "group::rwx", &path1]) + .args(["-m", "group::rwx", path1]) .status() .map(|status| status.code()) { diff --git a/tests/by-util/test_pr.rs b/tests/by-util/test_pr.rs index af3c41f1bd1..823f0718f4b 100644 --- a/tests/by-util/test_pr.rs +++ b/tests/by-util/test_pr.rs @@ -26,13 +26,12 @@ fn file_last_modified_time(ucmd: &UCommand, path: &str) -> String { } fn all_minutes(from: DateTime, to: DateTime) -> Vec { - let to = to + Duration::minutes(1); - // const FORMAT: &str = "%b %d %H:%M %Y"; + let to = to + Duration::try_minutes(1).unwrap(); let mut vec = vec![]; let mut current = from; while current < to { vec.push(current.format(DATE_TIME_FORMAT).to_string()); - current += Duration::minutes(1); + current += Duration::try_minutes(1).unwrap(); } vec } diff --git a/tests/by-util/test_shuf.rs b/tests/by-util/test_shuf.rs index 7b0af7c944c..8a991e43509 100644 --- a/tests/by-util/test_shuf.rs +++ b/tests/by-util/test_shuf.rs @@ -138,6 +138,99 @@ fn test_very_large_range_offset() { ); } +#[test] +fn test_range_repeat_no_overflow_1_max() { + let upper_bound = std::usize::MAX; + let result = new_ucmd!() + .arg("-rn1") + .arg(&format!("-i1-{upper_bound}")) + .succeeds(); + result.no_stderr(); + + let result_seq: Vec = result + .stdout_str() + .split('\n') + .filter(|x| !x.is_empty()) + .map(|x| x.parse().unwrap()) + .collect(); + assert_eq!(result_seq.len(), 1, "Miscounted output length!"); +} + +#[test] +fn test_range_repeat_no_overflow_0_max_minus_1() { + let upper_bound = std::usize::MAX - 1; + let result = new_ucmd!() + .arg("-rn1") + .arg(&format!("-i0-{upper_bound}")) + .succeeds(); + result.no_stderr(); + + let result_seq: Vec = result + .stdout_str() + .split('\n') + .filter(|x| !x.is_empty()) + .map(|x| x.parse().unwrap()) + .collect(); + assert_eq!(result_seq.len(), 1, "Miscounted output length!"); +} + +#[test] +fn test_range_permute_no_overflow_1_max() { + let upper_bound = std::usize::MAX; + let result = new_ucmd!() + .arg("-n1") + .arg(&format!("-i1-{upper_bound}")) + .succeeds(); + result.no_stderr(); + + let result_seq: Vec = result + .stdout_str() + .split('\n') + .filter(|x| !x.is_empty()) + .map(|x| x.parse().unwrap()) + .collect(); + assert_eq!(result_seq.len(), 1, "Miscounted output length!"); +} + +#[test] +fn test_range_permute_no_overflow_0_max_minus_1() { + let upper_bound = std::usize::MAX - 1; + let result = new_ucmd!() + .arg("-n1") + .arg(&format!("-i0-{upper_bound}")) + .succeeds(); + result.no_stderr(); + + let result_seq: Vec = result + .stdout_str() + .split('\n') + .filter(|x| !x.is_empty()) + .map(|x| x.parse().unwrap()) + .collect(); + assert_eq!(result_seq.len(), 1, "Miscounted output length!"); +} + +#[test] +fn test_range_permute_no_overflow_0_max() { + // NOTE: This is different from GNU shuf! + // GNU shuf accepts -i0-MAX-1 and -i1-MAX, but not -i0-MAX. + // This feels like a bug in GNU shuf. + let upper_bound = std::usize::MAX; + let result = new_ucmd!() + .arg("-n1") + .arg(&format!("-i0-{upper_bound}")) + .succeeds(); + result.no_stderr(); + + let result_seq: Vec = result + .stdout_str() + .split('\n') + .filter(|x| !x.is_empty()) + .map(|x| x.parse().unwrap()) + .collect(); + assert_eq!(result_seq.len(), 1, "Miscounted output length!"); +} + #[test] fn test_very_high_range_full() { let input_seq = vec![ @@ -626,7 +719,6 @@ fn test_shuf_multiple_input_line_count() { } #[test] -#[ignore = "known issue"] fn test_shuf_repeat_empty_range() { new_ucmd!() .arg("-ri4-3") @@ -653,3 +745,56 @@ fn test_shuf_repeat_empty_input() { .no_stdout() .stderr_only("shuf: no lines to repeat\n"); } + +#[test] +fn test_range_one_elem() { + new_ucmd!() + .arg("-i5-5") + .succeeds() + .no_stderr() + .stdout_only("5\n"); +} + +#[test] +fn test_range_empty() { + new_ucmd!().arg("-i5-4").succeeds().no_output(); +} + +#[test] +fn test_range_empty_minus_one() { + new_ucmd!() + .arg("-i5-3") + .fails() + .no_stdout() + .stderr_only("shuf: invalid input range: '5-3'\n"); +} + +#[test] +fn test_range_repeat_one_elem() { + new_ucmd!() + .arg("-n1") + .arg("-ri5-5") + .succeeds() + .no_stderr() + .stdout_only("5\n"); +} + +#[test] +fn test_range_repeat_empty() { + new_ucmd!() + .arg("-n1") + .arg("-ri5-4") + .fails() + .no_stdout() + .stderr_only("shuf: no lines to repeat\n"); +} + +#[test] +fn test_range_repeat_empty_minus_one() { + new_ucmd!() + .arg("-n1") + .arg("-ri5-3") + .fails() + .no_stdout() + .stderr_only("shuf: invalid input range: '5-3'\n"); +} diff --git a/tests/by-util/test_touch.rs b/tests/by-util/test_touch.rs index 3151ca720ad..3af129d49d7 100644 --- a/tests/by-util/test_touch.rs +++ b/tests/by-util/test_touch.rs @@ -5,7 +5,7 @@ // spell-checker:ignore (formats) cymdhm cymdhms mdhm mdhms ymdhm ymdhms datetime mktime use crate::common::util::{AtPath, TestScenario}; -use filetime::FileTime; +use filetime::{self, set_symlink_file_times, FileTime}; use std::fs::remove_file; use std::path::PathBuf; @@ -32,7 +32,7 @@ fn set_file_times(at: &AtPath, path: &str, atime: FileTime, mtime: FileTime) { fn str_to_filetime(format: &str, s: &str) -> FileTime { let tm = chrono::NaiveDateTime::parse_from_str(s, format).unwrap(); - FileTime::from_unix_time(tm.timestamp(), tm.timestamp_subsec_nanos()) + FileTime::from_unix_time(tm.and_utc().timestamp(), tm.timestamp_subsec_nanos()) } #[test] @@ -854,3 +854,40 @@ fn test_touch_invalid_date_format() { .fails() .stderr_contains("touch: invalid date format '+1000000000000 years'"); } + +#[test] +#[cfg(not(target_os = "freebsd"))] +fn test_touch_symlink_with_no_deref() { + let (at, mut ucmd) = at_and_ucmd!(); + let target = "foo.txt"; + let symlink = "bar.txt"; + let time = FileTime::from_unix_time(123, 0); + + at.touch(target); + at.relative_symlink_file(target, symlink); + set_symlink_file_times(at.plus(symlink), time, time).unwrap(); + + ucmd.args(&["-a", "--no-dereference", symlink]).succeeds(); + // Modification time shouldn't be set to the destination's modification time + assert_eq!(time, get_symlink_times(&at, symlink).1); +} + +#[test] +#[cfg(not(target_os = "freebsd"))] +fn test_touch_reference_symlink_with_no_deref() { + let (at, mut ucmd) = at_and_ucmd!(); + let target = "foo.txt"; + let symlink = "bar.txt"; + let arg = "baz.txt"; + let time = FileTime::from_unix_time(123, 0); + + at.touch(target); + at.relative_symlink_file(target, symlink); + set_symlink_file_times(at.plus(symlink), time, time).unwrap(); + at.touch(arg); + + ucmd.args(&["--reference", symlink, "--no-dereference", arg]) + .succeeds(); + // Times should be taken from the symlink, not the destination + assert_eq!((time, time), get_symlink_times(&at, arg)); +} diff --git a/tests/fixtures/install/helloworld_freebsd b/tests/fixtures/install/helloworld_freebsd new file mode 100755 index 0000000000000000000000000000000000000000..bfd788630303b757c533a76daf1bee115f830032 GIT binary patch literal 314024 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