Skip to content

Commit d3f04a3

Browse files
authored
Merge pull request #412 from dezgeg/uucore_parse_size
lscpu: Use parse_size from uucore
2 parents 4190bf3 + 87841f4 commit d3f04a3

File tree

3 files changed

+44
-20
lines changed

3 files changed

+44
-20
lines changed

Cargo.lock

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

src/uu/lscpu/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ path = "src/main.rs"
1313
[dependencies]
1414
regex = { workspace = true }
1515
sysinfo = { workspace = true }
16-
uucore = { workspace = true }
16+
uucore = { workspace = true, features = ["parser"] }
1717
clap = { workspace = true }
1818
serde = { workspace = true }
1919
serde_json = { workspace = true }

src/uu/lscpu/src/sysfs.rs

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// file that was distributed with this source code.
55

66
use std::{collections::HashSet, fs, path::PathBuf};
7+
use uucore::parser::parse_size;
78

89
pub struct CpuVulnerability {
910
pub name: String,
@@ -93,25 +94,7 @@ impl CacheSize {
9394
}
9495

9596
fn parse(s: &str) -> Self {
96-
// Yes, this will break if we ever reach a point where caches exceed terabytes in size...
97-
const EXPONENTS: [(char, u32); 4] = [('K', 1), ('M', 2), ('G', 3), ('T', 4)];
98-
99-
// If we only have numbers, treat it as a raw amount of bytes and parse as-is
100-
if s.chars().all(char::is_numeric) {
101-
return Self(s.parse::<u64>().expect("Could not parse cache size"));
102-
};
103-
104-
for (suffix, exponent) in EXPONENTS {
105-
if s.ends_with(suffix) {
106-
let nums = s.strip_suffix(suffix).unwrap();
107-
let value = nums.parse::<u64>().expect("Could not parse cache size");
108-
let multiplier = 1024_u64.pow(exponent);
109-
110-
return Self(value * multiplier);
111-
}
112-
}
113-
114-
panic!("No known suffix in cache size string");
97+
Self(parse_size::parse_size_u64(s).expect("Could not parse cache size"))
11598
}
11699

117100
pub fn size_bytes(&self) -> u64 {

0 commit comments

Comments
 (0)