Skip to content

Commit

Permalink
lsmem: improve Windows compatability
Browse files Browse the repository at this point in the history
  • Loading branch information
Foorack committed Feb 9, 2025
1 parent 5774bac commit 657a88d
Showing 1 changed file with 17 additions and 14 deletions.
31 changes: 17 additions & 14 deletions src/uu/lsmem/src/lsmem.rs
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,7 @@ impl Options {
split_by_removable: false,
split_by_state: false,
split_by_zones: false,
sysmem: String::from(PATH_SYS_MEMORY),
sysmem: Path::new(PATH_SYS_MEMORY).display().to_string(),

have_nodes: false,
have_zones: false,
Expand All @@ -362,16 +362,23 @@ impl Options {
fn read_info(lsmem: &mut Lsmem, opts: &mut Options) {
let path_block_size = Path::new(&opts.sysmem).join(PATH_SUB_BLOCK_SIZE_BYTES);
lsmem.block_size = u64::from_str_radix(
&read_file_content::<String>(path_block_size.as_path()).unwrap(),
&read_file_content::<String>(path_block_size.as_path())
.expect("Failed to read memory block size"),
16,
)
.unwrap();
lsmem.dirs = get_block_paths(opts);
lsmem.dirs.sort_by(|a, b| {
let filename_a = a.to_str().unwrap().split('/').last().unwrap();
let filename_b = b.to_str().unwrap().split('/').last().unwrap();
let idx_a: u64 = filename_a[PATH_NAME_MEMORY.len()..].parse().unwrap();
let idx_b: u64 = filename_b[PATH_NAME_MEMORY.len()..].parse().unwrap();
let filename_a = a.file_name().expect("Failed parsing memory block name");
let filename_a = filename_a.to_str().unwrap();
let filename_b = b.file_name().expect("Failed parsing memory block name");
let filename_b = filename_b.to_str().unwrap();
let idx_a: u64 = filename_a[PATH_NAME_MEMORY.len()..]
.parse()
.expect("Failed to parse memory block index");
let idx_b: u64 = filename_b[PATH_NAME_MEMORY.len()..]
.parse()
.expect("Failed to parse memory block index");
idx_a.cmp(&idx_b)
});
lsmem.ndirs = lsmem.dirs.len();
Expand Down Expand Up @@ -412,7 +419,7 @@ fn get_block_paths(opts: &mut Options) -> Vec<PathBuf> {
for entry in fs::read_dir(&opts.sysmem).unwrap() {
let entry = entry.unwrap();
let path = entry.path();
let filename = path.to_str().unwrap().split('/').last().unwrap();
let filename = path.file_name().unwrap().to_str().unwrap();
if path.is_dir() && filename.starts_with(PATH_NAME_MEMORY) {
paths.push(path);
}
Expand Down Expand Up @@ -458,7 +465,7 @@ fn memory_block_get_node(path: &PathBuf) -> Result<i32, <i32 as FromStr>::Err> {
for entry in fs::read_dir(path).unwrap() {
let entry = entry.unwrap();
let path = entry.path();
let filename = path.to_str().unwrap().split('/').last().unwrap();
let filename = path.file_name().unwrap().to_str().unwrap();
if path.is_dir() && filename.starts_with(PATH_NAME_NODE) {
return filename[PATH_NAME_NODE.len()..].parse();
}
Expand All @@ -470,7 +477,7 @@ fn memory_block_read_attrs(opts: &Options, path: &PathBuf) -> MemoryBlock {
let mut blk = MemoryBlock::new();
blk.count = 1;
blk.state = MemoryState::Unknown;
let filename = path.to_str().unwrap().split('/').last().unwrap();
let filename = path.file_name().unwrap().to_str().unwrap();
blk.index = filename[PATH_NAME_MEMORY.len()..].parse().unwrap();

let mut removable_path = path.clone();
Expand Down Expand Up @@ -778,11 +785,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
}

if let Some(sysroot) = matches.get_one::<String>(options::SYSROOT) {
opts.sysmem = format!(
"{}/{}",
sysroot.trim_end_matches('/'),
opts.sysmem.trim_start_matches('/')
);
opts.sysmem = Path::new(sysroot).join(opts.sysmem).display().to_string();
}

read_info(&mut lsmem, &mut opts);
Expand Down

0 comments on commit 657a88d

Please sign in to comment.