mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-29 12:07:46 +00:00
ls: Accept badly-encoded filenames
This commit is contained in:
parent
13bb263a50
commit
b5550bc4dd
1 changed files with 9 additions and 12 deletions
|
@ -248,7 +248,7 @@ struct LongFormat {
|
|||
|
||||
impl Config {
|
||||
#[allow(clippy::cognitive_complexity)]
|
||||
fn from(options: clap::ArgMatches) -> UResult<Config> {
|
||||
fn from(options: &clap::ArgMatches) -> UResult<Config> {
|
||||
let (mut format, opt) = if let Some(format_) = options.value_of(options::FORMAT) {
|
||||
(
|
||||
match format_ {
|
||||
|
@ -599,22 +599,19 @@ impl Config {
|
|||
|
||||
#[uucore_procs::gen_uumain]
|
||||
pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
||||
let args = args
|
||||
.collect_str(InvalidEncodingHandling::Ignore)
|
||||
.accept_any();
|
||||
|
||||
let usage = usage();
|
||||
|
||||
let app = uu_app().usage(&usage[..]);
|
||||
|
||||
let matches = app.get_matches_from(args);
|
||||
|
||||
let config = Config::from(&matches)?;
|
||||
let locs = matches
|
||||
.values_of(options::PATHS)
|
||||
.map(|v| v.map(ToString::to_string).collect())
|
||||
.unwrap_or_else(|| vec![String::from(".")]);
|
||||
.values_of_os(options::PATHS)
|
||||
.map(|v| v.map(Path::new).collect())
|
||||
.unwrap_or_else(|| vec![Path::new(".")]);
|
||||
|
||||
list(locs, Config::from(matches)?)
|
||||
list(locs, config)
|
||||
}
|
||||
|
||||
pub fn uu_app() -> App<'static, 'static> {
|
||||
|
@ -1249,14 +1246,14 @@ impl PathData {
|
|||
}
|
||||
}
|
||||
|
||||
fn list(locs: Vec<String>, config: Config) -> UResult<()> {
|
||||
fn list(locs: Vec<&Path>, config: Config) -> UResult<()> {
|
||||
let mut files = Vec::<PathData>::new();
|
||||
let mut dirs = Vec::<PathData>::new();
|
||||
|
||||
let mut out = BufWriter::new(stdout());
|
||||
|
||||
for loc in &locs {
|
||||
let p = PathBuf::from(&loc);
|
||||
let p = PathBuf::from(loc);
|
||||
let path_data = PathData::new(p, None, None, &config, true);
|
||||
|
||||
if path_data.md().is_none() {
|
||||
|
@ -1286,6 +1283,7 @@ fn list(locs: Vec<String>, config: Config) -> UResult<()> {
|
|||
sort_entries(&mut dirs, &config);
|
||||
for dir in dirs {
|
||||
if locs.len() > 1 || config.recursive {
|
||||
// FIXME: This should use the quoting style and propagate errors
|
||||
let _ = writeln!(out, "\n{}:", dir.p_buf.display());
|
||||
}
|
||||
enter_directory(&dir, &config, &mut out);
|
||||
|
@ -1671,7 +1669,6 @@ fn get_inode(metadata: &Metadata) -> String {
|
|||
use std::sync::Mutex;
|
||||
#[cfg(unix)]
|
||||
use uucore::entries;
|
||||
use uucore::InvalidEncodingHandling;
|
||||
|
||||
#[cfg(unix)]
|
||||
fn cached_uid2usr(uid: u32) -> String {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue