mirror of
https://github.com/uutils/coreutils
synced 2024-10-06 16:09:08 +00:00
commit
9c38583c6b
17
Cargo.lock
generated
17
Cargo.lock
generated
|
@ -186,6 +186,7 @@ dependencies = [
|
|||
"atty",
|
||||
"bitflags",
|
||||
"strsim",
|
||||
"term_size",
|
||||
"textwrap",
|
||||
"unicode-width",
|
||||
"vec_map",
|
||||
|
@ -1456,21 +1457,6 @@ version = "1.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
|
||||
dependencies = [
|
||||
"semver-parser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "semver-parser"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
||||
|
||||
[[package]]
|
||||
name = "sha1"
|
||||
version = "0.6.0"
|
||||
|
@ -2542,7 +2528,6 @@ dependencies = [
|
|||
"ouroboros",
|
||||
"rand 0.7.3",
|
||||
"rayon",
|
||||
"semver",
|
||||
"tempfile",
|
||||
"unicode-width",
|
||||
"uucore",
|
||||
|
|
|
@ -226,7 +226,7 @@ test = [ "uu_test" ]
|
|||
[workspace]
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
lazy_static = { version="1.3" }
|
||||
textwrap = { version="=0.11.0", features=["term_size"] } # !maint: [2020-05-10; rivy] unstable crate using undocumented features; pinned currently, will review
|
||||
uucore = { version=">=0.0.8", package="uucore", path="src/uucore" }
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/arch.rs"
|
|||
|
||||
[dependencies]
|
||||
platform-info = "0.1"
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/base32.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features = ["encoding"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/base64.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features = ["encoding"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
uu_base32 = { version=">=0.0.6", package="uu_base32", path="../base32"}
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/basename.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.2"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/cat.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
thiserror = "1.0"
|
||||
atty = "0.2"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["fs"] }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/chgrp.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["entries", "fs", "perms"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
walkdir = "2.2"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/chmod.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["fs", "mode"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/chown.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
glob = "0.3.0"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["entries", "fs", "perms"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/cksum.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/comm.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -19,7 +19,7 @@ edition = "2018"
|
|||
path = "src/cp.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
filetime = "0.2"
|
||||
libc = "0.2.85"
|
||||
quick-error = "1.2.3"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/csplit.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
thiserror = "1.0"
|
||||
regex = "1.0.0"
|
||||
glob = "0.2.11"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/cut.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
memchr = "2"
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/date.rs"
|
|||
|
||||
[dependencies]
|
||||
chrono = "0.4.4"
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/df.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
number_prefix = "0.4"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["libc", "fsext"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/dircolors.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
glob = "0.3.0"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/dirname.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/du.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
chrono = "0.4"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/echo.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
2
src/uu/env/Cargo.toml
vendored
2
src/uu/env/Cargo.toml
vendored
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/env.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
rust-ini = "0.13.0"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/expand.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
unicode-width = "0.1.5"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/expr.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
num-bigint = "0.4.0"
|
||||
num-traits = "0.2.14"
|
||||
|
|
|
@ -21,7 +21,7 @@ rand = { version = "0.7", features = ["small_rng"] }
|
|||
smallvec = { version = "0.6.14, < 1.0" }
|
||||
uucore = { version = ">=0.0.8", package = "uucore", path = "../../uucore" }
|
||||
uucore_procs = { version = ">=0.0.5", package = "uucore_procs", path = "../../uucore_procs" }
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
|
||||
[dev-dependencies]
|
||||
paste = "0.1.18"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/false.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/fmt.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
unicode-width = "0.1.5"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/fold.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ path = "src/groups.rs"
|
|||
[dependencies]
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["entries", "process"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
|
||||
[[bin]]
|
||||
name = "groups"
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/hashsum.rs"
|
|||
|
||||
[dependencies]
|
||||
digest = "0.6.2"
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
hex = "0.2.0"
|
||||
libc = "0.2.42"
|
||||
md5 = "0.3.5"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/head.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["ringbuffer"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/hostid.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/hostname.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
hostname = { version = "0.3", features = ["set"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["wide"] }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/id.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["entries", "process"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ edition = "2018"
|
|||
path = "src/install.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
filetime = "0.2"
|
||||
file_diff = "1.0.0"
|
||||
libc = ">= 0.2"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/join.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/kill.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["signals"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -18,7 +18,7 @@ path = "src/link.rs"
|
|||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
|
||||
[[bin]]
|
||||
name = "link"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/ln.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["fs"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/logname.rs"
|
|||
|
||||
[dependencies]
|
||||
libc = "0.2.42"
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ path = "src/ls.rs"
|
|||
[dependencies]
|
||||
locale = "0.2.2"
|
||||
chrono = "0.4.19"
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
unicode-width = "0.1.8"
|
||||
number_prefix = "0.4"
|
||||
term_grid = "0.1.5"
|
||||
|
|
|
@ -14,7 +14,6 @@ extern crate uucore;
|
|||
extern crate lazy_static;
|
||||
|
||||
mod quoting_style;
|
||||
mod version_cmp;
|
||||
|
||||
use clap::{crate_version, App, Arg};
|
||||
use globset::{self, Glob, GlobSet, GlobSetBuilder};
|
||||
|
@ -45,6 +44,7 @@ use uucore::error::{set_exit_code, FromIo, UCustomError, UResult};
|
|||
use unicode_width::UnicodeWidthStr;
|
||||
#[cfg(unix)]
|
||||
use uucore::libc::{S_IXGRP, S_IXOTH, S_IXUSR};
|
||||
use uucore::{fs::display_permissions, version_cmp::version_cmp};
|
||||
|
||||
static ABOUT: &str = "
|
||||
By default, ls will list the files and contents of any directories on
|
||||
|
@ -1275,7 +1275,8 @@ fn sort_entries(entries: &mut Vec<PathData>, config: &Config) {
|
|||
}
|
||||
// The default sort in GNU ls is case insensitive
|
||||
Sort::Name => entries.sort_by(|a, b| a.display_name.cmp(&b.display_name)),
|
||||
Sort::Version => entries.sort_by(|a, b| version_cmp::version_cmp(&a.p_buf, &b.p_buf)),
|
||||
Sort::Version => entries
|
||||
.sort_by(|a, b| version_cmp(&a.p_buf.to_string_lossy(), &b.p_buf.to_string_lossy())),
|
||||
Sort::Extension => entries.sort_by(|a, b| {
|
||||
a.p_buf
|
||||
.extension()
|
||||
|
@ -1486,8 +1487,6 @@ fn display_grid(
|
|||
}
|
||||
}
|
||||
|
||||
use uucore::fs::display_permissions;
|
||||
|
||||
fn display_item_long(
|
||||
item: &PathData,
|
||||
max_links: usize,
|
||||
|
|
|
@ -1,306 +0,0 @@
|
|||
use std::cmp::Ordering;
|
||||
use std::path::Path;
|
||||
|
||||
/// Compare paths in a way that matches the GNU version sort, meaning that
|
||||
/// numbers get sorted in a natural way.
|
||||
pub(crate) fn version_cmp(a: &Path, b: &Path) -> Ordering {
|
||||
let a_string = a.to_string_lossy();
|
||||
let b_string = b.to_string_lossy();
|
||||
let mut a = a_string.chars().peekable();
|
||||
let mut b = b_string.chars().peekable();
|
||||
|
||||
// The order determined from the number of leading zeroes.
|
||||
// This is used if the filenames are equivalent up to leading zeroes.
|
||||
let mut leading_zeroes = Ordering::Equal;
|
||||
|
||||
loop {
|
||||
match (a.next(), b.next()) {
|
||||
// If the characters are both numerical. We collect the rest of the number
|
||||
// and parse them to u64's and compare them.
|
||||
(Some(a_char @ '0'..='9'), Some(b_char @ '0'..='9')) => {
|
||||
let mut a_leading_zeroes = 0;
|
||||
if a_char == '0' {
|
||||
a_leading_zeroes = 1;
|
||||
while let Some('0') = a.peek() {
|
||||
a_leading_zeroes += 1;
|
||||
a.next();
|
||||
}
|
||||
}
|
||||
|
||||
let mut b_leading_zeroes = 0;
|
||||
if b_char == '0' {
|
||||
b_leading_zeroes = 1;
|
||||
while let Some('0') = b.peek() {
|
||||
b_leading_zeroes += 1;
|
||||
b.next();
|
||||
}
|
||||
}
|
||||
// The first different number of leading zeros determines the order
|
||||
// so if it's already been determined by a previous number, we leave
|
||||
// it as that ordering.
|
||||
// It's b.cmp(&a), because the *largest* number of leading zeros
|
||||
// should go first
|
||||
if leading_zeroes == Ordering::Equal {
|
||||
leading_zeroes = b_leading_zeroes.cmp(&a_leading_zeroes);
|
||||
}
|
||||
|
||||
let mut a_str = String::new();
|
||||
let mut b_str = String::new();
|
||||
if a_char != '0' {
|
||||
a_str.push(a_char);
|
||||
}
|
||||
if b_char != '0' {
|
||||
b_str.push(b_char);
|
||||
}
|
||||
|
||||
// Unwrapping here is fine because we only call next if peek returns
|
||||
// Some(_), so next should also return Some(_).
|
||||
while let Some('0'..='9') = a.peek() {
|
||||
a_str.push(a.next().unwrap());
|
||||
}
|
||||
|
||||
while let Some('0'..='9') = b.peek() {
|
||||
b_str.push(b.next().unwrap());
|
||||
}
|
||||
|
||||
// Since the leading zeroes are stripped, the length can be
|
||||
// used to compare the numbers.
|
||||
match a_str.len().cmp(&b_str.len()) {
|
||||
Ordering::Equal => {}
|
||||
x => return x,
|
||||
}
|
||||
|
||||
// At this point, leading zeroes are stripped and the lengths
|
||||
// are equal, meaning that the strings can be compared using
|
||||
// the standard compare function.
|
||||
match a_str.cmp(&b_str) {
|
||||
Ordering::Equal => {}
|
||||
x => return x,
|
||||
}
|
||||
}
|
||||
// If there are two characters we just compare the characters
|
||||
(Some(a_char), Some(b_char)) => match a_char.cmp(&b_char) {
|
||||
Ordering::Equal => {}
|
||||
x => return x,
|
||||
},
|
||||
// Otherwise, we compare the options (because None < Some(_))
|
||||
(a_opt, b_opt) => match a_opt.cmp(&b_opt) {
|
||||
// If they are completely equal except for leading zeroes, we use the leading zeroes.
|
||||
Ordering::Equal => return leading_zeroes,
|
||||
x => return x,
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::version_cmp::version_cmp;
|
||||
use std::cmp::Ordering;
|
||||
use std::path::PathBuf;
|
||||
#[test]
|
||||
fn test_version_cmp() {
|
||||
// Identical strings
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("hello"), &PathBuf::from("hello")),
|
||||
Ordering::Equal
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("file12"), &PathBuf::from("file12")),
|
||||
Ordering::Equal
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(
|
||||
&PathBuf::from("file12-suffix"),
|
||||
&PathBuf::from("file12-suffix")
|
||||
),
|
||||
Ordering::Equal
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(
|
||||
&PathBuf::from("file12-suffix24"),
|
||||
&PathBuf::from("file12-suffix24")
|
||||
),
|
||||
Ordering::Equal
|
||||
);
|
||||
|
||||
// Shortened names
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("world"), &PathBuf::from("wo")),
|
||||
Ordering::Greater,
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("hello10wo"), &PathBuf::from("hello10world")),
|
||||
Ordering::Less,
|
||||
);
|
||||
|
||||
// Simple names
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("world"), &PathBuf::from("hello")),
|
||||
Ordering::Greater,
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("hello"), &PathBuf::from("world")),
|
||||
Ordering::Less
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("apple"), &PathBuf::from("ant")),
|
||||
Ordering::Greater
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("ant"), &PathBuf::from("apple")),
|
||||
Ordering::Less
|
||||
);
|
||||
|
||||
// Uppercase letters
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("Beef"), &PathBuf::from("apple")),
|
||||
Ordering::Less,
|
||||
"Uppercase letters are sorted before all lowercase letters"
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("Apple"), &PathBuf::from("apple")),
|
||||
Ordering::Less
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("apple"), &PathBuf::from("aPple")),
|
||||
Ordering::Greater
|
||||
);
|
||||
|
||||
// Numbers
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("100"), &PathBuf::from("20")),
|
||||
Ordering::Greater,
|
||||
"Greater numbers are greater even if they start with a smaller digit",
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("20"), &PathBuf::from("20")),
|
||||
Ordering::Equal,
|
||||
"Equal numbers are equal"
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("15"), &PathBuf::from("200")),
|
||||
Ordering::Less,
|
||||
"Small numbers are smaller"
|
||||
);
|
||||
|
||||
// Comparing numbers with other characters
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("1000"), &PathBuf::from("apple")),
|
||||
Ordering::Less,
|
||||
"Numbers are sorted before other characters"
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
// spell-checker:disable-next-line
|
||||
version_cmp(&PathBuf::from("file1000"), &PathBuf::from("fileapple")),
|
||||
Ordering::Less,
|
||||
"Numbers in the middle of the name are sorted before other characters"
|
||||
);
|
||||
|
||||
// Leading zeroes
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("012"), &PathBuf::from("12")),
|
||||
Ordering::Less,
|
||||
"A single leading zero can make a difference"
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("000800"), &PathBuf::from("0000800")),
|
||||
Ordering::Greater,
|
||||
"Leading number of zeroes is used even if both non-zero number of zeros"
|
||||
);
|
||||
|
||||
// Numbers and other characters combined
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("ab10"), &PathBuf::from("aa11")),
|
||||
Ordering::Greater
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("aa10"), &PathBuf::from("aa11")),
|
||||
Ordering::Less,
|
||||
"Numbers after other characters are handled correctly."
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("aa2"), &PathBuf::from("aa100")),
|
||||
Ordering::Less,
|
||||
"Numbers after alphabetical characters are handled correctly."
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("aa10bb"), &PathBuf::from("aa11aa")),
|
||||
Ordering::Less,
|
||||
"Number is used even if alphabetical characters after it differ."
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("aa10aa0010"), &PathBuf::from("aa11aa1")),
|
||||
Ordering::Less,
|
||||
"Second number is ignored if the first number differs."
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("aa10aa0010"), &PathBuf::from("aa10aa1")),
|
||||
Ordering::Greater,
|
||||
"Second number is used if the rest is equal."
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("aa10aa0010"), &PathBuf::from("aa00010aa1")),
|
||||
Ordering::Greater,
|
||||
"Second number is used if the rest is equal up to leading zeroes of the first number."
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("aa10aa0022"), &PathBuf::from("aa010aa022")),
|
||||
Ordering::Greater,
|
||||
"The leading zeroes of the first number has priority."
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("aa10aa0022"), &PathBuf::from("aa10aa022")),
|
||||
Ordering::Less,
|
||||
"The leading zeroes of other numbers than the first are used."
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(&PathBuf::from("file-1.4"), &PathBuf::from("file-1.13")),
|
||||
Ordering::Less,
|
||||
"Periods are handled as normal text, not as a decimal point."
|
||||
);
|
||||
|
||||
// Greater than u64::Max
|
||||
// u64 == 18446744073709551615 so this should be plenty:
|
||||
// 20000000000000000000000
|
||||
assert_eq!(
|
||||
version_cmp(
|
||||
&PathBuf::from("aa2000000000000000000000bb"),
|
||||
&PathBuf::from("aa002000000000000000000001bb")
|
||||
),
|
||||
Ordering::Less,
|
||||
"Numbers larger than u64::MAX are handled correctly without crashing"
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
version_cmp(
|
||||
&PathBuf::from("aa2000000000000000000000bb"),
|
||||
&PathBuf::from("aa002000000000000000000000bb")
|
||||
),
|
||||
Ordering::Greater,
|
||||
"Leading zeroes for numbers larger than u64::MAX are handled correctly without crashing"
|
||||
);
|
||||
}
|
||||
}
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/mkdir.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["fs", "mode"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/mkfifo.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -16,7 +16,7 @@ name = "uu_mknod"
|
|||
path = "src/mknod.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "^0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["mode"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/mktemp.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
rand = "0.5"
|
||||
tempfile = "3.1"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/more.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version = ">=0.0.7", package = "uucore", path = "../../uucore" }
|
||||
uucore_procs = { version = ">=0.0.5", package = "uucore_procs", path = "../../uucore_procs" }
|
||||
crossterm = ">=0.19"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/mv.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
fs_extra = "1.1.0"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/nice.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
nix = { version="<=0.13" }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/nl.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
aho-corasick = "0.7.3"
|
||||
libc = "0.2.42"
|
||||
memchr = "2.2.0"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/nohup.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
atty = "0.2"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["fs"] }
|
||||
|
|
|
@ -17,7 +17,7 @@ path = "src/nproc.rs"
|
|||
[dependencies]
|
||||
libc = "0.2.42"
|
||||
num_cpus = "1.10"
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["fs"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/numfmt.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/od.rs"
|
|||
|
||||
[dependencies]
|
||||
byteorder = "1.3.2"
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
half = "1.6"
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/paste.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/pathchk.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -17,7 +17,7 @@ path = "src/pinky.rs"
|
|||
[dependencies]
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["utmpx", "entries"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
|
||||
[[bin]]
|
||||
name = "pinky"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/pr.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.7", package="uucore", path="../../uucore", features=["utmpx", "entries"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
getopts = "0.2.21"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/printenv.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ edition = "2018"
|
|||
path = "src/printf.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
itertools = "0.8.0"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/ptx.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
aho-corasick = "0.7.3"
|
||||
libc = "0.2.42"
|
||||
memchr = "2.2.0"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/pwd.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/readlink.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["fs"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/realpath.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["fs"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/relpath.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["fs"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/rm.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
walkdir = "2.2"
|
||||
remove_dir_all = "0.5.1"
|
||||
winapi = { version="0.3", features=[] }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/rmdir.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/seq.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
num-bigint = "0.4.0"
|
||||
num-traits = "0.2.14"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/shred.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
filetime = "0.2.1"
|
||||
libc = "0.2.42"
|
||||
rand = "0.5"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/shuf.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
rand = "0.5"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/sleep.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/sort.rs"
|
|||
|
||||
[dependencies]
|
||||
binary-heap-plus = "0.4.1"
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
compare = "0.1.0"
|
||||
fnv = "1.0.7"
|
||||
itertools = "0.10.0"
|
||||
|
@ -24,7 +24,6 @@ memchr = "2.4.0"
|
|||
ouroboros = "0.9.3"
|
||||
rand = "0.7"
|
||||
rayon = "1.5"
|
||||
semver = "0.9.0"
|
||||
tempfile = "3"
|
||||
unicode-width = "0.1.8"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["fs"] }
|
||||
|
|
|
@ -32,7 +32,6 @@ use numeric_str_cmp::{human_numeric_str_cmp, numeric_str_cmp, NumInfo, NumInfoPa
|
|||
use rand::distributions::Alphanumeric;
|
||||
use rand::{thread_rng, Rng};
|
||||
use rayon::prelude::*;
|
||||
use semver::Version;
|
||||
use std::cmp::Ordering;
|
||||
use std::env;
|
||||
use std::ffi::OsStr;
|
||||
|
@ -44,6 +43,7 @@ use std::path::Path;
|
|||
use std::path::PathBuf;
|
||||
use unicode_width::UnicodeWidthStr;
|
||||
use uucore::parse_size::{parse_size, ParseSizeError};
|
||||
use uucore::version_cmp::version_cmp;
|
||||
use uucore::InvalidEncodingHandling;
|
||||
|
||||
const NAME: &str = "sort";
|
||||
|
@ -1198,12 +1198,14 @@ pub fn uu_app() -> App<'static, 'static> {
|
|||
options::check::QUIET,
|
||||
options::check::DIAGNOSE_FIRST,
|
||||
])
|
||||
.conflicts_with(options::OUTPUT)
|
||||
.help("check for sorted input; do not sort"),
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name(options::check::CHECK_SILENT)
|
||||
.short("C")
|
||||
.long(options::check::CHECK_SILENT)
|
||||
.conflicts_with(options::OUTPUT)
|
||||
.help("exit successfully if the given file is already sorted, and exit with status 1 otherwise."),
|
||||
)
|
||||
.arg(
|
||||
|
@ -1410,7 +1412,7 @@ fn compare_by<'a>(
|
|||
general_numeric_compare(a_float, b_float)
|
||||
}
|
||||
SortMode::Month => month_compare(a_str, b_str),
|
||||
SortMode::Version => version_compare(a_str, b_str),
|
||||
SortMode::Version => version_cmp(a_str, b_str),
|
||||
SortMode::Default => custom_str_cmp(
|
||||
a_str,
|
||||
b_str,
|
||||
|
@ -1615,31 +1617,6 @@ fn month_compare(a: &str, b: &str) -> Ordering {
|
|||
}
|
||||
}
|
||||
|
||||
fn version_parse(a: &str) -> Version {
|
||||
let result = Version::parse(a);
|
||||
|
||||
match result {
|
||||
Ok(vers_a) => vers_a,
|
||||
// Non-version lines parse to 0.0.0
|
||||
Err(_e) => Version::parse("0.0.0").unwrap(),
|
||||
}
|
||||
}
|
||||
|
||||
fn version_compare(a: &str, b: &str) -> Ordering {
|
||||
#![allow(clippy::comparison_chain)]
|
||||
let ver_a = version_parse(a);
|
||||
let ver_b = version_parse(b);
|
||||
|
||||
// Version::cmp is not implemented; implement comparison directly
|
||||
if ver_a > ver_b {
|
||||
Ordering::Greater
|
||||
} else if ver_a < ver_b {
|
||||
Ordering::Less
|
||||
} else {
|
||||
Ordering::Equal
|
||||
}
|
||||
}
|
||||
|
||||
fn print_sorted<'a, T: Iterator<Item = &'a Line<'a>>>(iter: T, settings: &GlobalSettings) {
|
||||
let mut writer = settings.out_writer();
|
||||
for line in iter {
|
||||
|
@ -1712,7 +1689,7 @@ mod tests {
|
|||
let a = "1.2.3-alpha2";
|
||||
let b = "1.4.0";
|
||||
|
||||
assert_eq!(Ordering::Less, version_compare(a, b));
|
||||
assert_eq!(Ordering::Less, version_cmp(a, b));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/split.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/stat.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["entries", "libc", "fs", "fsext"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/stdbuf.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
tempfile = "3.1"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/sum.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/sync.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["wide"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/tac.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/tail.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["ringbuffer"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/tee.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
retain_mut = "0.1.2"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["libc"] }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/test.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/timeout.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
nix = "0.20.0"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["process", "signals"] }
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/touch.rs"
|
|||
|
||||
[dependencies]
|
||||
filetime = "0.2.1"
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
time = "0.1.40"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["libc"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -17,7 +17,7 @@ path = "src/tr.rs"
|
|||
[dependencies]
|
||||
bit-set = "0.5.0"
|
||||
fnv = "1.0.5"
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/true.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/truncate.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/tty.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
atty = "0.2"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["fs"] }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/uname.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
platform-info = "0.1"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/unexpand.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
unicode-width = "0.1.5"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/uniq.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
strum = "0.20"
|
||||
strum_macros = "0.20"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/unlink.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
libc = "0.2.42"
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
|
|
@ -16,7 +16,7 @@ path = "src/uptime.rs"
|
|||
|
||||
[dependencies]
|
||||
chrono = "0.4"
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["libc", "utmpx"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/users.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["utmpx"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/wc.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore" }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
thiserror = "1.0"
|
||||
|
|
|
@ -17,7 +17,7 @@ path = "src/who.rs"
|
|||
[dependencies]
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["utmpx"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
clap = "2.33.3"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
|
||||
[[bin]]
|
||||
name = "who"
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/whoami.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["entries", "wide"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ edition = "2018"
|
|||
path = "src/yes.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33"
|
||||
clap = { version = "2.33", features = ["wrap_help"] }
|
||||
uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["zero-copy"] }
|
||||
uucore_procs = { version=">=0.0.5", package="uucore_procs", path="../../uucore_procs" }
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ pub use crate::mods::error;
|
|||
pub use crate::mods::os;
|
||||
pub use crate::mods::panic;
|
||||
pub use crate::mods::ranges;
|
||||
pub use crate::mods::version_cmp;
|
||||
|
||||
// * string parsing modules
|
||||
pub use crate::parser::parse_size;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue