diff --git a/src/uu/tail/src/args.rs b/src/uu/tail/src/args.rs index eff332230..487e366e6 100644 --- a/src/uu/tail/src/args.rs +++ b/src/uu/tail/src/args.rs @@ -7,7 +7,7 @@ use crate::paths::Input; use crate::{parse, platform, Quotable}; -use clap::crate_version; +use clap::{crate_version, value_parser}; use clap::{Arg, ArgAction, ArgMatches, Command}; use fundu::DurationParser; use is_terminal::IsTerminal; @@ -283,7 +283,7 @@ impl Settings { } settings.inputs = matches - .get_raw(options::ARG_FILES) + .get_many::(options::ARG_FILES) .map(|v| v.map(Input::from).collect()) .unwrap_or_else(|| vec![Input::default()]); @@ -584,6 +584,7 @@ pub fn uu_app() -> Command { Arg::new(options::ARG_FILES) .action(ArgAction::Append) .num_args(1..) + .value_parser(value_parser!(OsString)) .value_hint(clap::ValueHint::FilePath), ) } diff --git a/src/uu/tail/src/paths.rs b/src/uu/tail/src/paths.rs index cce3270a8..5ed654037 100644 --- a/src/uu/tail/src/paths.rs +++ b/src/uu/tail/src/paths.rs @@ -10,10 +10,7 @@ use std::ffi::OsStr; use std::fs::{File, Metadata}; use std::io::{Seek, SeekFrom}; #[cfg(unix)] -use std::os::unix::{ - fs::{FileTypeExt, MetadataExt}, - prelude::OsStrExt, -}; +use std::os::unix::fs::{FileTypeExt, MetadataExt}; use std::path::{Path, PathBuf}; use uucore::error::UResult; @@ -26,9 +23,7 @@ pub enum InputKind { #[cfg(unix)] impl From<&OsStr> for InputKind { fn from(value: &OsStr) -> Self { - const DASH: [u8; 1] = [b'-']; - - if value.as_bytes() == DASH { + if value == OsStr::new("-") { Self::Stdin } else { Self::File(PathBuf::from(value))