Skip to content

Commit 044b33d

Browse files
authored
Merge pull request #7760 from Qelxiros/7670-tail-hex-formatting
tail hex parsing, remove fundu dependency
1 parent 0125bbc commit 044b33d

File tree

10 files changed

+125
-91
lines changed

10 files changed

+125
-91
lines changed

.vscode/cspell.dictionaries/workspace.wordlist.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ exacl
2020
filetime
2121
formatteriteminfo
2222
fsext
23-
fundu
2423
getopts
2524
getrandom
2625
globset

Cargo.lock

Lines changed: 0 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# coreutils (uutils)
22
# * see the repository LICENSE, README, and CONTRIBUTING files for more information
33

4-
# spell-checker:ignore (libs) bigdecimal datetime serde bincode fundu gethostid kqueue libselinux mangen memmap procfs uuhelp startswith constness expl
4+
# spell-checker:ignore (libs) bigdecimal datetime serde bincode gethostid kqueue libselinux mangen memmap procfs uuhelp startswith constness expl
55

66
[package]
77
name = "coreutils"
@@ -295,7 +295,6 @@ filetime = "0.2.23"
295295
fnv = "1.0.7"
296296
fs_extra = "1.3.0"
297297
fts-sys = "0.2.16"
298-
fundu = "2.0.0"
299298
gcd = "2.3"
300299
glob = "0.3.1"
301300
half = "2.4.1"

fuzz/fuzz_targets/fuzz_parse_time.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use uucore::parser::parse_time;
55

66
fuzz_target!(|data: &[u8]| {
77
if let Ok(s) = std::str::from_utf8(data) {
8-
_ = parse_time::from_str(s);
8+
_ = parse_time::from_str(s, true);
9+
_ = parse_time::from_str(s, false);
910
}
1011
});

src/uu/sleep/src/sleep.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ fn sleep(args: &[&str]) -> UResult<()> {
6464

6565
let sleep_dur = args
6666
.iter()
67-
.filter_map(|input| match parse_time::from_str(input) {
67+
.filter_map(|input| match parse_time::from_str(input, true) {
6868
Ok(duration) => Some(duration),
6969
Err(error) => {
7070
arg_error = true;

src/uu/tail/Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# spell-checker:ignore (libs) kqueue fundu
1+
# spell-checker:ignore (libs) kqueue
22
[package]
33
name = "uu_tail"
44
description = "tail ~ (uutils) display the last lines of input"
@@ -25,7 +25,6 @@ memchr = { workspace = true }
2525
notify = { workspace = true }
2626
uucore = { workspace = true, features = ["parser"] }
2727
same-file = { workspace = true }
28-
fundu = { workspace = true }
2928

3029
[target.'cfg(windows)'.dependencies]
3130
windows-sys = { workspace = true, features = [

src/uu/tail/src/args.rs

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
// For the full copyright and license information, please view the LICENSE
44
// file that was distributed with this source code.
55

6-
// spell-checker:ignore (ToDO) kqueue Signum fundu
6+
// spell-checker:ignore (ToDO) kqueue Signum
77

88
use crate::paths::Input;
99
use crate::{Quotable, parse, platform};
1010
use clap::{Arg, ArgAction, ArgMatches, Command, value_parser};
11-
use fundu::{DurationParser, SaturatingInto};
1211
use same_file::Handle;
1312
use std::ffi::OsString;
1413
use std::io::IsTerminal;
1514
use std::time::Duration;
1615
use uucore::error::{UResult, USimpleError, UUsageError};
1716
use uucore::parser::parse_size::{ParseSizeError, parse_size_u64};
17+
use uucore::parser::parse_time;
1818
use uucore::parser::shortcut_value_parser::ShortcutValueParser;
1919
use uucore::{format_usage, help_about, help_usage, show_warning};
2020

@@ -228,22 +228,9 @@ impl Settings {
228228
};
229229

230230
if let Some(source) = matches.get_one::<String>(options::SLEEP_INT) {
231-
// Advantage of `fundu` over `Duration::(try_)from_secs_f64(source.parse().unwrap())`:
232-
// * doesn't panic on errors like `Duration::from_secs_f64` would.
233-
// * no precision loss, rounding errors or other floating point problems.
234-
// * evaluates to `Duration::MAX` if the parsed number would have exceeded
235-
// `DURATION::MAX` or `infinity` was given
236-
// * not applied here but it supports customizable time units and provides better error
237-
// messages
238-
settings.sleep_sec = match DurationParser::without_time_units().parse(source) {
239-
Ok(duration) => SaturatingInto::<Duration>::saturating_into(duration),
240-
Err(_) => {
241-
return Err(UUsageError::new(
242-
1,
243-
format!("invalid number of seconds: '{source}'"),
244-
));
245-
}
246-
}
231+
settings.sleep_sec = parse_time::from_str(source, false).map_err(|_| {
232+
UUsageError::new(1, format!("invalid number of seconds: '{source}'"))
233+
})?;
247234
}
248235

249236
if let Some(s) = matches.get_one::<String>(options::MAX_UNCHANGED_STATS) {

src/uu/timeout/src/timeout.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,15 @@ impl Config {
7171

7272
let kill_after = match options.get_one::<String>(options::KILL_AFTER) {
7373
None => None,
74-
Some(kill_after) => match parse_time::from_str(kill_after) {
74+
Some(kill_after) => match parse_time::from_str(kill_after, true) {
7575
Ok(k) => Some(k),
7676
Err(err) => return Err(UUsageError::new(ExitStatus::TimeoutFailed.into(), err)),
7777
},
7878
};
7979

8080
let duration =
81-
match parse_time::from_str(options.get_one::<String>(options::DURATION).unwrap()) {
82-
Ok(duration) => duration,
83-
Err(err) => return Err(UUsageError::new(ExitStatus::TimeoutFailed.into(), err)),
84-
};
81+
parse_time::from_str(options.get_one::<String>(options::DURATION).unwrap(), true)
82+
.map_err(|err| UUsageError::new(ExitStatus::TimeoutFailed.into(), err))?;
8583

8684
let preserve_status: bool = options.get_flag(options::PRESERVE_STATUS);
8785
let foreground = options.get_flag(options::FOREGROUND);

0 commit comments

Comments
 (0)