mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-29 20:17:45 +00:00
refactor ~ reduce excessive use of scope prefixes
This commit is contained in:
parent
78d55f0e32
commit
156502a332
12 changed files with 23 additions and 30 deletions
|
@ -55,6 +55,7 @@ use std::os::unix::io::IntoRawFd;
|
||||||
use std::os::windows::ffi::OsStrExt;
|
use std::os::windows::ffi::OsStrExt;
|
||||||
use std::path::{Path, PathBuf, StripPrefixError};
|
use std::path::{Path, PathBuf, StripPrefixError};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
use std::string::ToString;
|
||||||
use uucore::fs::{canonicalize, CanonicalizeMode};
|
use uucore::fs::{canonicalize, CanonicalizeMode};
|
||||||
use walkdir::WalkDir;
|
use walkdir::WalkDir;
|
||||||
|
|
||||||
|
@ -477,7 +478,7 @@ pub fn uumain(args: Vec<String>) -> i32 {
|
||||||
let options = crash_if_err!(EXIT_ERR, Options::from_matches(&matches));
|
let options = crash_if_err!(EXIT_ERR, Options::from_matches(&matches));
|
||||||
let paths: Vec<String> = matches
|
let paths: Vec<String> = matches
|
||||||
.values_of("paths")
|
.values_of("paths")
|
||||||
.map(|v| v.map(std::string::ToString::to_string).collect())
|
.map(|v| v.map(ToString::to_string).collect())
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
|
||||||
let (sources, target) = crash_if_err!(EXIT_ERR, parse_path_args(&paths, &options));
|
let (sources, target) = crash_if_err!(EXIT_ERR, parse_path_args(&paths, &options));
|
||||||
|
@ -593,7 +594,7 @@ impl Options {
|
||||||
let no_target_dir = matches.is_present(OPT_NO_TARGET_DIRECTORY);
|
let no_target_dir = matches.is_present(OPT_NO_TARGET_DIRECTORY);
|
||||||
let target_dir = matches
|
let target_dir = matches
|
||||||
.value_of(OPT_TARGET_DIRECTORY)
|
.value_of(OPT_TARGET_DIRECTORY)
|
||||||
.map(std::string::ToString::to_string);
|
.map(ToString::to_string);
|
||||||
|
|
||||||
// Parse attributes to preserve
|
// Parse attributes to preserve
|
||||||
let preserve_attributes: Vec<Attribute> = if matches.is_present(OPT_PRESERVE) {
|
let preserve_attributes: Vec<Attribute> = if matches.is_present(OPT_PRESERVE) {
|
||||||
|
|
|
@ -123,7 +123,7 @@ pub fn uumain(args: Vec<String>) -> i32 {
|
||||||
Ok(f) => {
|
Ok(f) => {
|
||||||
let fin = BufReader::new(f);
|
let fin = BufReader::new(f);
|
||||||
result = parse(
|
result = parse(
|
||||||
fin.lines().filter_map(std::result::Result::ok),
|
fin.lines().filter_map(Result::ok),
|
||||||
out_format,
|
out_format,
|
||||||
matches.free[0].as_str(),
|
matches.free[0].as_str(),
|
||||||
)
|
)
|
||||||
|
|
5
src/env/env.rs
vendored
5
src/env/env.rs
vendored
|
@ -18,6 +18,7 @@ use ini::Ini;
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::io::{self, Write};
|
use std::io::{self, Write};
|
||||||
|
use std::iter::Iterator;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
|
||||||
const USAGE: &str = "env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]";
|
const USAGE: &str = "env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]";
|
||||||
|
@ -160,11 +161,11 @@ fn run_env(args: Vec<String>) -> Result<(), i32> {
|
||||||
let null = matches.is_present("null");
|
let null = matches.is_present("null");
|
||||||
let files = matches
|
let files = matches
|
||||||
.values_of("file")
|
.values_of("file")
|
||||||
.map(std::iter::Iterator::collect)
|
.map(Iterator::collect)
|
||||||
.unwrap_or_else(|| Vec::with_capacity(0));
|
.unwrap_or_else(|| Vec::with_capacity(0));
|
||||||
let unsets = matches
|
let unsets = matches
|
||||||
.values_of("unset")
|
.values_of("unset")
|
||||||
.map(std::iter::Iterator::collect)
|
.map(Iterator::collect)
|
||||||
.unwrap_or_else(|| Vec::with_capacity(0));
|
.unwrap_or_else(|| Vec::with_capacity(0));
|
||||||
|
|
||||||
let mut opts = Options {
|
let mut opts = Options {
|
||||||
|
|
|
@ -32,6 +32,7 @@ use regex::Regex;
|
||||||
use sha1::Sha1;
|
use sha1::Sha1;
|
||||||
use sha2::{Sha224, Sha256, Sha384, Sha512};
|
use sha2::{Sha224, Sha256, Sha384, Sha512};
|
||||||
use sha3::{Sha3_224, Sha3_256, Sha3_384, Sha3_512, Shake128, Shake256};
|
use sha3::{Sha3_224, Sha3_256, Sha3_384, Sha3_512, Shake128, Shake256};
|
||||||
|
use std::cmp::Ordering;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{self, stdin, BufRead, BufReader, Read};
|
use std::io::{self, stdin, BufRead, BufReader, Read};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
@ -503,12 +504,8 @@ fn hashsum(
|
||||||
}
|
}
|
||||||
if !status {
|
if !status {
|
||||||
match bad_format.cmp(&1) {
|
match bad_format.cmp(&1) {
|
||||||
std::cmp::Ordering::Equal => {
|
Ordering::Equal => show_warning!("{} line is improperly formatted", bad_format),
|
||||||
show_warning!("{} line is improperly formatted", bad_format)
|
Ordering::Greater => show_warning!("{} lines are improperly formatted", bad_format),
|
||||||
}
|
|
||||||
std::cmp::Ordering::Greater => {
|
|
||||||
show_warning!("{} lines are improperly formatted", bad_format)
|
|
||||||
}
|
|
||||||
_ => {}
|
_ => {}
|
||||||
};
|
};
|
||||||
if failed > 0 {
|
if failed > 0 {
|
||||||
|
|
|
@ -364,7 +364,7 @@ fn directory(paths: &[PathBuf], b: Behaviour) -> i32 {
|
||||||
/// Test if the path is a a new file path that can be
|
/// Test if the path is a a new file path that can be
|
||||||
/// created immediately
|
/// created immediately
|
||||||
fn is_new_file_path(path: &Path) -> bool {
|
fn is_new_file_path(path: &Path) -> bool {
|
||||||
path.is_file() || !path.exists() && path.parent().map(std::path::Path::is_dir).unwrap_or(true)
|
path.is_file() || !path.exists() && path.parent().map(Path::is_dir).unwrap_or(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Perform an install, given a list of paths and behaviour.
|
/// Perform an install, given a list of paths and behaviour.
|
||||||
|
|
|
@ -295,8 +295,7 @@ fn should_display(entry: &DirEntry, options: &getopts::Matches) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn enter_directory(dir: &PathBuf, options: &getopts::Matches) {
|
fn enter_directory(dir: &PathBuf, options: &getopts::Matches) {
|
||||||
let mut entries: Vec<_> =
|
let mut entries: Vec<_> = safe_unwrap!(fs::read_dir(dir).and_then(Iterator::collect));
|
||||||
safe_unwrap!(fs::read_dir(dir).and_then(std::iter::Iterator::collect));
|
|
||||||
|
|
||||||
entries.retain(|e| should_display(e, options));
|
entries.retain(|e| should_display(e, options));
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ extern crate uucore;
|
||||||
use libc::{c_char, c_int, execvp};
|
use libc::{c_char, c_int, execvp};
|
||||||
use std::ffi::CString;
|
use std::ffi::CString;
|
||||||
use std::io::Error;
|
use std::io::Error;
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
const NAME: &str = "nice";
|
const NAME: &str = "nice";
|
||||||
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||||
|
@ -120,7 +121,7 @@ process).",
|
||||||
.map(|x| CString::new(x.as_bytes()).unwrap())
|
.map(|x| CString::new(x.as_bytes()).unwrap())
|
||||||
.collect();
|
.collect();
|
||||||
let mut args: Vec<*const c_char> = cstrs.iter().map(|s| s.as_ptr()).collect();
|
let mut args: Vec<*const c_char> = cstrs.iter().map(|s| s.as_ptr()).collect();
|
||||||
args.push(std::ptr::null::<c_char>());
|
args.push(ptr::null::<c_char>());
|
||||||
unsafe {
|
unsafe {
|
||||||
execvp(args[0], args.as_mut_ptr());
|
execvp(args[0], args.as_mut_ptr());
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,17 +123,14 @@ With no FILE, or when FILE is -, read standard input.",
|
||||||
let mut evec = matches
|
let mut evec = matches
|
||||||
.free
|
.free
|
||||||
.iter()
|
.iter()
|
||||||
.map(std::string::String::as_bytes)
|
.map(String::as_bytes)
|
||||||
.collect::<Vec<&[u8]>>();
|
.collect::<Vec<&[u8]>>();
|
||||||
find_seps(&mut evec, sep);
|
find_seps(&mut evec, sep);
|
||||||
shuf_bytes(&mut evec, repeat, count, sep, output, random);
|
shuf_bytes(&mut evec, repeat, count, sep, output, random);
|
||||||
}
|
}
|
||||||
Mode::InputRange((b, e)) => {
|
Mode::InputRange((b, e)) => {
|
||||||
let rvec = (b..e).map(|x| format!("{}", x)).collect::<Vec<String>>();
|
let rvec = (b..e).map(|x| format!("{}", x)).collect::<Vec<String>>();
|
||||||
let mut rvec = rvec
|
let mut rvec = rvec.iter().map(String::as_bytes).collect::<Vec<&[u8]>>();
|
||||||
.iter()
|
|
||||||
.map(std::string::String::as_bytes)
|
|
||||||
.collect::<Vec<&[u8]>>();
|
|
||||||
shuf_bytes(&mut rvec, repeat, count, sep, output, random);
|
shuf_bytes(&mut rvec, repeat, count, sep, output, random);
|
||||||
}
|
}
|
||||||
Mode::Default => {
|
Mode::Default => {
|
||||||
|
|
|
@ -15,6 +15,7 @@ pub use libc::{
|
||||||
S_IFSOCK, S_IRGRP, S_IROTH, S_IRUSR, S_ISGID, S_ISUID, S_ISVTX, S_IWGRP, S_IWOTH, S_IWUSR,
|
S_IFSOCK, S_IRGRP, S_IROTH, S_IRUSR, S_ISGID, S_ISUID, S_ISVTX, S_IWGRP, S_IWOTH, S_IWUSR,
|
||||||
S_IXGRP, S_IXOTH, S_IXUSR,
|
S_IXGRP, S_IXOTH, S_IXUSR,
|
||||||
};
|
};
|
||||||
|
use std::time::UNIX_EPOCH;
|
||||||
|
|
||||||
pub trait BirthTime {
|
pub trait BirthTime {
|
||||||
fn pretty_birth(&self) -> String;
|
fn pretty_birth(&self) -> String;
|
||||||
|
@ -26,7 +27,7 @@ impl BirthTime for Metadata {
|
||||||
fn pretty_birth(&self) -> String {
|
fn pretty_birth(&self) -> String {
|
||||||
self.created()
|
self.created()
|
||||||
.ok()
|
.ok()
|
||||||
.and_then(|t| t.duration_since(std::time::UNIX_EPOCH).ok())
|
.and_then(|t| t.duration_since(UNIX_EPOCH).ok())
|
||||||
.map(|e| pretty_time(e.as_secs() as i64, i64::from(e.subsec_nanos())))
|
.map(|e| pretty_time(e.as_secs() as i64, i64::from(e.subsec_nanos())))
|
||||||
.unwrap_or_else(|| "-".to_owned())
|
.unwrap_or_else(|| "-".to_owned())
|
||||||
}
|
}
|
||||||
|
@ -34,7 +35,7 @@ impl BirthTime for Metadata {
|
||||||
fn birth(&self) -> String {
|
fn birth(&self) -> String {
|
||||||
self.created()
|
self.created()
|
||||||
.ok()
|
.ok()
|
||||||
.and_then(|t| t.duration_since(std::time::UNIX_EPOCH).ok())
|
.and_then(|t| t.duration_since(UNIX_EPOCH).ok())
|
||||||
.map(|e| format!("{}", e.as_secs()))
|
.map(|e| format!("{}", e.as_secs()))
|
||||||
.unwrap_or_else(|| "0".to_owned())
|
.unwrap_or_else(|| "0".to_owned())
|
||||||
}
|
}
|
||||||
|
|
|
@ -482,12 +482,8 @@ impl Stater {
|
||||||
);
|
);
|
||||||
let mut mount_list = reader
|
let mut mount_list = reader
|
||||||
.lines()
|
.lines()
|
||||||
.filter_map(std::result::Result::ok)
|
.filter_map(Result::ok)
|
||||||
.filter_map(|line| {
|
.filter_map(|line| line.split_whitespace().nth(1).map(ToOwned::to_owned))
|
||||||
line.split_whitespace()
|
|
||||||
.nth(1)
|
|
||||||
.map(std::borrow::ToOwned::to_owned)
|
|
||||||
})
|
|
||||||
.collect::<Vec<String>>();
|
.collect::<Vec<String>>();
|
||||||
// Reverse sort. The longer comes first.
|
// Reverse sort. The longer comes first.
|
||||||
mount_list.sort_by(|a, b| b.cmp(a));
|
mount_list.sort_by(|a, b| b.cmp(a));
|
||||||
|
|
|
@ -66,7 +66,7 @@ pub fn uumain(args: Vec<String>) -> i32 {
|
||||||
fn exec(filename: &str) {
|
fn exec(filename: &str) {
|
||||||
let mut users = Utmpx::iter_all_records()
|
let mut users = Utmpx::iter_all_records()
|
||||||
.read_from(filename)
|
.read_from(filename)
|
||||||
.filter(uucore::utmpx::Utmpx::is_user_process)
|
.filter(Utmpx::is_user_process)
|
||||||
.map(|ut| ut.user())
|
.map(|ut| ut.user())
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
|
|
@ -325,7 +325,7 @@ impl Who {
|
||||||
if self.short_list {
|
if self.short_list {
|
||||||
let users = Utmpx::iter_all_records()
|
let users = Utmpx::iter_all_records()
|
||||||
.read_from(f)
|
.read_from(f)
|
||||||
.filter(uucore::utmpx::Utmpx::is_user_process)
|
.filter(Utmpx::is_user_process)
|
||||||
.map(|ut| ut.user())
|
.map(|ut| ut.user())
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
println!("{}", users.join(" "));
|
println!("{}", users.join(" "));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue