1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-28 03:27:44 +00:00

Merge branch 'main' into split-gnu-test-fail.sh

This commit is contained in:
Yury Zhytkou 2023-09-05 17:22:31 -04:00 committed by GitHub
commit e0b000a3bc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 69 additions and 133 deletions

View file

@ -1,2 +1,2 @@
msrv = "1.64.0"
msrv = "1.70.0"
cognitive-complexity-threshold = 10

View file

@ -11,7 +11,7 @@ env:
PROJECT_NAME: coreutils
PROJECT_DESC: "Core universal (cross-platform) utilities"
PROJECT_AUTH: "uutils"
RUST_MIN_SRV: "1.64.0"
RUST_MIN_SRV: "1.70.0"
# * style job configuration
STYLE_FAIL_ON_FAULT: true ## (bool) fail the build if a style job contains a fault (error or warning); may be overridden on a per-job basis
@ -30,7 +30,7 @@ jobs:
name: Style/cargo-deny
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: EmbarkStudios/cargo-deny-action@v1
style_deps:
@ -47,7 +47,7 @@ jobs:
- { os: macos-latest , features: "feat_Tier1,feat_require_unix,feat_require_unix_utmpx" }
- { os: windows-latest , features: feat_os_windows }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
## note: requires 'nightly' toolchain b/c `cargo-udeps` uses the `rustc` '-Z save-analysis' option
## * ... ref: <https://github.com/est31/cargo-udeps/issues/73>
@ -91,7 +91,7 @@ jobs:
job:
- { os: ubuntu-latest , features: feat_os_unix }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
@ -131,7 +131,7 @@ jobs:
env:
RUN_FOR: 60
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- name: Install `cargo-fuzz`
run: cargo install cargo-fuzz
@ -182,7 +182,7 @@ jobs:
- { os: macos-latest , features: feat_os_macos }
- { os: windows-latest , features: feat_os_windows }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
@ -238,7 +238,7 @@ jobs:
job:
- { os: ubuntu-latest , features: feat_os_unix }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Initialize workflow variables
id: vars
shell: bash
@ -292,7 +292,7 @@ jobs:
# - { os: macos-latest , features: feat_os_macos }
# - { os: windows-latest , features: feat_os_windows }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
@ -345,7 +345,7 @@ jobs:
job:
- { os: ubuntu-latest , features: feat_os_unix }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_MIN_SRV }}
@ -413,7 +413,7 @@ jobs:
job:
- { os: ubuntu-latest , features: feat_os_unix }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: "`cargo update` testing"
@ -436,7 +436,7 @@ jobs:
job:
- { os: ubuntu-latest , features: feat_os_unix }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@nextest
- uses: Swatinem/rust-cache@v2
@ -490,7 +490,7 @@ jobs:
- { os: macos-latest , features: feat_os_macos }
- { os: windows-latest , features: feat_os_windows }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@nextest
- uses: Swatinem/rust-cache@v2
@ -517,7 +517,7 @@ jobs:
- { os: macos-latest , features: feat_os_macos }
- { os: windows-latest , features: feat_os_windows }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- uses: taiki-e/install-action@nextest
- uses: Swatinem/rust-cache@v2
@ -541,7 +541,7 @@ jobs:
job:
- { os: ubuntu-latest , features: feat_os_unix }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Run sccache-cache
@ -661,7 +661,7 @@ jobs:
- { os: windows-latest , target: x86_64-pc-windows-gnu , features: feat_os_windows } ## note: requires rust >= 1.43.0 to link correctly
- { os: windows-latest , target: x86_64-pc-windows-msvc , features: feat_os_windows }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_MIN_SRV }}
@ -920,7 +920,7 @@ jobs:
run: |
## VARs setup
echo "TEST_SUMMARY_FILE=busybox-result.json" >> $GITHUB_OUTPUT
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.3
@ -1000,7 +1000,7 @@ jobs:
outputs() { step_id="${{ github.action }}"; for var in "$@" ; do echo steps.${step_id}.outputs.${var}="${!var}"; echo "${var}=${!var}" >> $GITHUB_OUTPUT; done; }
TEST_SUMMARY_FILE="toybox-result.json"
outputs TEST_SUMMARY_FILE
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_MIN_SRV }}
@ -1071,7 +1071,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Check
run: npx --yes @taplo/cli fmt --check
@ -1091,7 +1091,7 @@ jobs:
- { os: macos-latest , features: macos, toolchain: nightly }
- { os: windows-latest , features: windows, toolchain: nightly-x86_64-pc-windows-gnu }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.job.toolchain }}

View file

@ -29,7 +29,7 @@ jobs:
permissions:
contents: read
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@master
env:
@ -50,7 +50,7 @@ jobs:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup shfmt
uses: mfinelli/setup-shfmt@v2
- name: Run shfmt

View file

@ -26,7 +26,7 @@ jobs:
job:
- { os: ubuntu-latest , features: feat_os_unix }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Initialize job variables
id: vars
shell: bash
@ -85,7 +85,7 @@ jobs:
job:
- { os: ubuntu-latest , features: feat_os_unix }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Initialize job variables
id: vars
shell: bash

View file

@ -55,7 +55,7 @@ jobs:
TEST_FULL_SUMMARY_FILE='gnu-full-result.json'
outputs SUITE_LOG_FILE ROOT_SUITE_LOG_FILE TEST_FILESET_PREFIX TEST_FILESET_SUFFIX TEST_LOGS_GLOB TEST_SUMMARY_FILE TEST_FULL_SUMMARY_FILE
- name: Checkout code (uutil)
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
path: '${{ steps.vars.outputs.path_UUTILS }}'
- uses: dtolnay/rust-toolchain@master
@ -66,7 +66,7 @@ jobs:
with:
workspaces: "./${{ steps.vars.outputs.path_UUTILS }} -> target"
- name: Checkout code (GNU coreutils)
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: 'coreutils/coreutils'
path: '${{ steps.vars.outputs.path_GNU }}'
@ -307,11 +307,11 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Checkout code uutil
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
path: 'uutils'
- name: Checkout GNU coreutils
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: 'coreutils/coreutils'
path: 'gnu'

View file

@ -26,7 +26,7 @@ jobs:
env:
TERMUX: v0.118.0
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Restore AVD cache
uses: actions/cache/restore@v3
id: avd-cache

View file

@ -30,7 +30,7 @@ jobs:
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.3
@ -120,7 +120,7 @@ jobs:
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.3

51
Cargo.lock generated
View file

@ -34,16 +34,15 @@ dependencies = [
[[package]]
name = "anstream"
version = "0.3.2"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c"
dependencies = [
"anstyle",
"anstyle-parse",
"anstyle-query",
"anstyle-wincon",
"colorchoice",
"is-terminal",
"utf8parse",
]
@ -73,9 +72,9 @@ dependencies = [
[[package]]
name = "anstyle-wincon"
version = "1.0.1"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd"
dependencies = [
"anstyle",
"windows-sys 0.48.0",
@ -263,32 +262,31 @@ dependencies = [
[[package]]
name = "clap"
version = "4.3.21"
version = "4.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fd"
checksum = "6a13b88d2c62ff462f88e4a121f17a82c1af05693a2f192b5c38d14de73c19f6"
dependencies = [
"clap_builder",
]
[[package]]
name = "clap_builder"
version = "4.3.21"
version = "4.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aa"
checksum = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08"
dependencies = [
"anstream",
"anstyle",
"clap_lex",
"once_cell",
"strsim",
"terminal_size",
]
[[package]]
name = "clap_complete"
version = "4.3.0"
version = "4.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a04ddfaacc3bc9e6ea67d024575fafc2a813027cf374b8f24f7bc233c6b6be12"
checksum = "586a385f7ef2f8b4d86bddaa0c094794e7ccbfe5ffef1f434fe928143fc783a5"
dependencies = [
"clap",
]
@ -389,7 +387,6 @@ dependencies = [
"filetime",
"glob",
"hex-literal",
"is-terminal",
"libc",
"nix",
"once_cell",
@ -1030,10 +1027,11 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
[[package]]
name = "half"
version = "2.2.1"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0"
checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872"
dependencies = [
"cfg-if",
"crunchy",
]
@ -1138,17 +1136,6 @@ dependencies = [
"windows-sys 0.48.0",
]
[[package]]
name = "is-terminal"
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
dependencies = [
"hermit-abi",
"rustix 0.38.8",
"windows-sys 0.48.0",
]
[[package]]
name = "itertools"
version = "0.11.0"
@ -2311,7 +2298,6 @@ name = "uu_cat"
version = "0.0.21"
dependencies = [
"clap",
"is-terminal",
"nix",
"thiserror",
"uucore",
@ -2411,7 +2397,6 @@ version = "0.0.21"
dependencies = [
"bstr",
"clap",
"is-terminal",
"memchr",
"uucore",
]
@ -2679,7 +2664,6 @@ dependencies = [
"chrono",
"clap",
"glob",
"is-terminal",
"lscolors",
"number_prefix",
"once_cell",
@ -2732,7 +2716,6 @@ version = "0.0.21"
dependencies = [
"clap",
"crossterm",
"is-terminal",
"nix",
"unicode-segmentation",
"unicode-width",
@ -2773,7 +2756,6 @@ name = "uu_nohup"
version = "0.0.21"
dependencies = [
"clap",
"is-terminal",
"libc",
"uucore",
]
@ -3072,7 +3054,6 @@ version = "0.0.21"
dependencies = [
"clap",
"fundu",
"is-terminal",
"libc",
"memchr",
"notify",
@ -3162,7 +3143,6 @@ name = "uu_tty"
version = "0.0.21"
dependencies = [
"clap",
"is-terminal",
"nix",
"uucore",
]
@ -3331,12 +3311,11 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "walkdir"
version = "2.3.2"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
dependencies = [
"same-file",
"winapi",
"winapi-util",
]

View file

@ -16,7 +16,7 @@ repository = "https://github.com/uutils/coreutils"
readme = "README.md"
keywords = ["coreutils", "uutils", "cross-platform", "cli", "utility"]
categories = ["command-line-utilities"]
rust-version = "1.64.0"
rust-version = "1.70.0"
edition = "2021"
build = "build.rs"
@ -268,8 +268,8 @@ chrono = { version = "^0.4.28", default-features = false, features = [
"alloc",
"clock",
] }
clap = { version = "4.3", features = ["wrap_help", "cargo"] }
clap_complete = "4.3"
clap = { version = "4.4", features = ["wrap_help", "cargo"] }
clap_complete = "4.4"
clap_mangen = "0.2"
compare = "0.1.0"
coz = { version = "0.1.3" }
@ -284,9 +284,8 @@ fts-sys = "0.2"
fundu = "2.0.0"
gcd = "2.3"
glob = "0.3.1"
half = "2.2"
half = "2.3"
indicatif = "0.17"
is-terminal = "0.4.9"
itertools = "0.11.0"
libc = "0.2.147"
lscolors = { version = "0.15.0", default-features = false, features = [
@ -328,7 +327,7 @@ time = { version = "0.3" }
unicode-segmentation = "1.10.1"
unicode-width = "0.1.10"
utf-8 = "0.7.6"
walkdir = "2.3"
walkdir = "2.4"
winapi-util = "0.1.5"
windows-sys = { version = "0.48.0", default-features = false }
xattr = "1.0.1"
@ -491,7 +490,6 @@ time = { workspace = true, features = ["local-offset"] }
unindent = "0.2"
uucore = { workspace = true, features = ["entries", "process", "signals"] }
walkdir = { workspace = true }
is-terminal = { workspace = true }
hex-literal = "0.4.1"
rstest = { workspace = true }

View file

@ -14,7 +14,7 @@
[![dependency status](https://deps.rs/repo/github/uutils/coreutils/status.svg)](https://deps.rs/repo/github/uutils/coreutils)
[![CodeCov](https://codecov.io/gh/uutils/coreutils/branch/master/graph/badge.svg)](https://codecov.io/gh/uutils/coreutils)
![MSRV](https://img.shields.io/badge/MSRV-1.64.0-brightgreen)
![MSRV](https://img.shields.io/badge/MSRV-1.70.0-brightgreen)
</div>
@ -71,7 +71,7 @@ the [coreutils docs](https://github.com/uutils/uutils.github.io) repository.
### Rust Version
uutils follows Rust's release channels and is tested against stable, beta and
nightly. The current Minimum Supported Rust Version (MSRV) is `1.64.0`.
nightly. The current Minimum Supported Rust Version (MSRV) is `1.70.0`.
## Building

View file

@ -17,7 +17,6 @@ path = "src/cat.rs"
[dependencies]
clap = { workspace = true }
thiserror = { workspace = true }
is-terminal = { workspace = true }
uucore = { workspace = true, features = ["fs", "pipes"] }
[target.'cfg(unix)'.dependencies]

View file

@ -7,9 +7,8 @@
// last synced with: cat (GNU coreutils) 8.13
use clap::{crate_version, Arg, ArgAction, Command};
use is_terminal::IsTerminal;
use std::fs::{metadata, File};
use std::io::{self, Read, Write};
use std::io::{self, IsTerminal, Read, Write};
use thiserror::Error;
use uucore::display::Quotable;
use uucore::error::UResult;

View file

@ -19,7 +19,6 @@ clap = { workspace = true }
uucore = { workspace = true, features = ["ranges"] }
memchr = { workspace = true }
bstr = { workspace = true }
is-terminal = { workspace = true }
[[bin]]
name = "cut"

View file

@ -7,9 +7,8 @@
use bstr::io::BufReadExt;
use clap::{crate_version, Arg, ArgAction, Command};
use is_terminal::IsTerminal;
use std::fs::File;
use std::io::{stdin, stdout, BufReader, BufWriter, Read, Write};
use std::io::{stdin, stdout, BufReader, BufWriter, IsTerminal, Read, Write};
use std::path::Path;
use uucore::display::Quotable;
use uucore::error::{FromIo, UResult, USimpleError};

View file

@ -25,7 +25,6 @@ glob = { workspace = true }
lscolors = { workspace = true }
uucore = { workspace = true, features = ["entries", "fs"] }
once_cell = { workspace = true }
is-terminal = { workspace = true }
selinux = { workspace = true, optional = true }
[[bin]]

View file

@ -10,12 +10,11 @@ use clap::{
crate_version, Arg, ArgAction, Command,
};
use glob::{MatchOptions, Pattern};
use is_terminal::IsTerminal;
use lscolors::LsColors;
use number_prefix::NumberPrefix;
use once_cell::unsync::OnceCell;
use std::collections::HashSet;
use std::num::IntErrorKind;
use std::{collections::HashSet, io::IsTerminal};
#[cfg(windows)]
use std::os::windows::fs::MetadataExt;

View file

@ -18,7 +18,6 @@ path = "src/more.rs"
clap = { workspace = true }
uucore = { workspace = true }
crossterm = { workspace = true }
is-terminal = { workspace = true }
unicode-width = { workspace = true }
unicode-segmentation = { workspace = true }

View file

@ -7,7 +7,7 @@
use std::{
fs::File,
io::{stdin, stdout, BufReader, Read, Stdout, Write},
io::{stdin, stdout, BufReader, IsTerminal, Read, Stdout, Write},
path::Path,
time::Duration,
};
@ -22,7 +22,6 @@ use crossterm::{
terminal::{self, Clear, ClearType},
};
use is_terminal::IsTerminal;
use unicode_segmentation::UnicodeSegmentation;
use unicode_width::UnicodeWidthStr;
use uucore::display::Quotable;

View file

@ -17,7 +17,6 @@ path = "src/nohup.rs"
[dependencies]
clap = { workspace = true }
libc = { workspace = true }
is-terminal = { workspace = true }
uucore = { workspace = true, features = ["fs"] }
[[bin]]

View file

@ -6,14 +6,13 @@
// spell-checker:ignore (ToDO) execvp SIGHUP cproc vprocmgr cstrs homeout
use clap::{crate_version, Arg, ArgAction, Command};
use is_terminal::IsTerminal;
use libc::{c_char, dup2, execvp, signal};
use libc::{SIGHUP, SIG_IGN};
use std::env;
use std::ffi::CString;
use std::fmt::{Display, Formatter};
use std::fs::{File, OpenOptions};
use std::io::Error;
use std::io::{Error, IsTerminal};
use std::os::unix::prelude::*;
use std::path::{Path, PathBuf};
use uucore::display::Quotable;

View file

@ -22,7 +22,6 @@ memchr = { workspace = true }
notify = { workspace = true }
uucore = { workspace = true }
same-file = { workspace = true }
is-terminal = { workspace = true }
fundu = { workspace = true }
[target.'cfg(windows)'.dependencies]

View file

@ -10,9 +10,9 @@ use crate::{parse, platform, Quotable};
use clap::{crate_version, value_parser};
use clap::{Arg, ArgAction, ArgMatches, Command};
use fundu::{DurationParser, SaturatingInto};
use is_terminal::IsTerminal;
use same_file::Handle;
use std::ffi::OsString;
use std::io::IsTerminal;
use std::time::Duration;
use uucore::error::{UResult, USimpleError, UUsageError};
use uucore::parse_size::{parse_size, ParseSizeError};

View file

@ -17,7 +17,6 @@ path = "src/tty.rs"
[dependencies]
clap = { workspace = true }
nix = { workspace = true, features = ["term"] }
is-terminal = { workspace = true }
uucore = { workspace = true, features = ["fs"] }
[[bin]]

View file

@ -8,8 +8,7 @@
// spell-checker:ignore (ToDO) ttyname filedesc
use clap::{crate_version, Arg, ArgAction, Command};
use is_terminal::IsTerminal;
use std::io::Write;
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};

View file

@ -702,7 +702,7 @@ fn compute_number_width(inputs: &Inputs, settings: &Settings) -> usize {
if total == 0 {
minimum_width
} else {
let total_width = (1 + ilog10_u64(total))
let total_width = (1 + total.ilog10())
.try_into()
.expect("ilog of a u64 should fit into a usize");
max(total_width, minimum_width)
@ -857,29 +857,3 @@ fn print_stats(
writeln!(stdout)
}
}
// TODO: remove and just use usize::ilog10 once the MSRV is >= 1.67.
fn ilog10_u64(mut u: u64) -> u32 {
if u == 0 {
panic!("cannot compute log of 0")
}
let mut log = 0;
if u >= 10_000_000_000 {
log += 10;
u /= 10_000_000_000;
}
if u >= 100_000 {
log += 5;
u /= 100_000;
}
// Rust's standard library in versions >= 1.67 does something even more clever than this, but
// this should work just fine for the time being.
log + match u {
1..=9 => 0,
10..=99 => 1,
100..=999 => 2,
1000..=9999 => 3,
10000..=99999 => 4,
_ => unreachable!(),
}
}

View file

@ -58,10 +58,7 @@ fn args_into_buffer<'a>(
buf: &mut Vec<u8>,
i: Option<impl Iterator<Item = &'a OsString>>,
) -> Result<(), Box<dyn Error>> {
// TODO: this should be replaced with let/else once available in the MSRV.
let i = if let Some(i) = i {
i
} else {
let Some(i) = i else {
buf.extend_from_slice(b"y\n");
return Ok(());
};

View file

@ -3,7 +3,7 @@
// For the full copyright and license information, please view the LICENSE
// file that was distributed with this source code.
use crate::common::util::TestScenario;
use is_terminal::IsTerminal;
use std::io::IsTerminal;
#[test]
fn test_more_no_arg() {

View file

@ -1188,7 +1188,7 @@ fn test_short_combination() {
assert_eq!(at.read("x00"), "a");
assert_eq!(at.read("x01"), "b");
assert_eq!(at.read("x02"), "c");
assert_eq!(at.file_exists("x03"), false);
assert!(!at.file_exists("x03"));
}
/// Test for the last effective suffix, ignoring all others - numeric long last

View file

@ -19,14 +19,15 @@ path_GNU="$(readlink -fm -- "${path_GNU:-${path_UUTILS}/../gnu}")"
###
# On MacOS there is no system /usr/bin/timeout
# and trying to add it to /usr/bin (with symlink of copy binary) will fail unless system integrity protection is disabled (not ideal)
# ref: https://support.apple.com/en-us/102149
# On MacOS the Homebrew coreutils could be installed and then "sudo ln -s /opt/homebrew/bin/timeout /usr/local/bin/timeout"
# Set to /usr/local/bin/timeout instead if /usr/bin/timeout is not found
SYSTEM_TIMEOUT="timeout"
if [ -x /usr/bin/timeout ] ; then
if [ -x /usr/bin/timeout ]; then
SYSTEM_TIMEOUT="/usr/bin/timeout"
elif [ -x /usr/local/bin/timeout ] ; then
elif [ -x /usr/local/bin/timeout ]; then
SYSTEM_TIMEOUT="/usr/local/bin/timeout"
fi