lsmem: improve Windows compatability
This commit is contained in:
parent
5774bac639
commit
657a88db20
@ -348,7 +348,7 @@ impl Options {
|
|||||||
split_by_removable: false,
|
split_by_removable: false,
|
||||||
split_by_state: false,
|
split_by_state: false,
|
||||||
split_by_zones: false,
|
split_by_zones: false,
|
||||||
sysmem: String::from(PATH_SYS_MEMORY),
|
sysmem: Path::new(PATH_SYS_MEMORY).display().to_string(),
|
||||||
|
|
||||||
have_nodes: false,
|
have_nodes: false,
|
||||||
have_zones: false,
|
have_zones: false,
|
||||||
@ -362,16 +362,23 @@ impl Options {
|
|||||||
fn read_info(lsmem: &mut Lsmem, opts: &mut Options) {
|
fn read_info(lsmem: &mut Lsmem, opts: &mut Options) {
|
||||||
let path_block_size = Path::new(&opts.sysmem).join(PATH_SUB_BLOCK_SIZE_BYTES);
|
let path_block_size = Path::new(&opts.sysmem).join(PATH_SUB_BLOCK_SIZE_BYTES);
|
||||||
lsmem.block_size = u64::from_str_radix(
|
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,
|
16,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
lsmem.dirs = get_block_paths(opts);
|
lsmem.dirs = get_block_paths(opts);
|
||||||
lsmem.dirs.sort_by(|a, b| {
|
lsmem.dirs.sort_by(|a, b| {
|
||||||
let filename_a = a.to_str().unwrap().split('/').last().unwrap();
|
let filename_a = a.file_name().expect("Failed parsing memory block name");
|
||||||
let filename_b = b.to_str().unwrap().split('/').last().unwrap();
|
let filename_a = filename_a.to_str().unwrap();
|
||||||
let idx_a: u64 = filename_a[PATH_NAME_MEMORY.len()..].parse().unwrap();
|
let filename_b = b.file_name().expect("Failed parsing memory block name");
|
||||||
let idx_b: u64 = filename_b[PATH_NAME_MEMORY.len()..].parse().unwrap();
|
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)
|
idx_a.cmp(&idx_b)
|
||||||
});
|
});
|
||||||
lsmem.ndirs = lsmem.dirs.len();
|
lsmem.ndirs = lsmem.dirs.len();
|
||||||
@ -412,7 +419,7 @@ fn get_block_paths(opts: &mut Options) -> Vec<PathBuf> {
|
|||||||
for entry in fs::read_dir(&opts.sysmem).unwrap() {
|
for entry in fs::read_dir(&opts.sysmem).unwrap() {
|
||||||
let entry = entry.unwrap();
|
let entry = entry.unwrap();
|
||||||
let path = entry.path();
|
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) {
|
if path.is_dir() && filename.starts_with(PATH_NAME_MEMORY) {
|
||||||
paths.push(path);
|
paths.push(path);
|
||||||
}
|
}
|
||||||
@ -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() {
|
for entry in fs::read_dir(path).unwrap() {
|
||||||
let entry = entry.unwrap();
|
let entry = entry.unwrap();
|
||||||
let path = entry.path();
|
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) {
|
if path.is_dir() && filename.starts_with(PATH_NAME_NODE) {
|
||||||
return filename[PATH_NAME_NODE.len()..].parse();
|
return filename[PATH_NAME_NODE.len()..].parse();
|
||||||
}
|
}
|
||||||
@ -470,7 +477,7 @@ fn memory_block_read_attrs(opts: &Options, path: &PathBuf) -> MemoryBlock {
|
|||||||
let mut blk = MemoryBlock::new();
|
let mut blk = MemoryBlock::new();
|
||||||
blk.count = 1;
|
blk.count = 1;
|
||||||
blk.state = MemoryState::Unknown;
|
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();
|
blk.index = filename[PATH_NAME_MEMORY.len()..].parse().unwrap();
|
||||||
|
|
||||||
let mut removable_path = path.clone();
|
let mut removable_path = path.clone();
|
||||||
@ -778,11 +785,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let Some(sysroot) = matches.get_one::<String>(options::SYSROOT) {
|
if let Some(sysroot) = matches.get_one::<String>(options::SYSROOT) {
|
||||||
opts.sysmem = format!(
|
opts.sysmem = Path::new(sysroot).join(opts.sysmem).display().to_string();
|
||||||
"{}/{}",
|
|
||||||
sysroot.trim_end_matches('/'),
|
|
||||||
opts.sysmem.trim_start_matches('/')
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
read_info(&mut lsmem, &mut opts);
|
read_info(&mut lsmem, &mut opts);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user