diff --git a/src/kernel/lkm.rs b/src/kernel/lkm.rs index c3591a1..63b77a7 100644 --- a/src/kernel/lkm.rs +++ b/src/kernel/lkm.rs @@ -5,6 +5,7 @@ use crate::util; use bytesize::ByteSize; use clap::ArgMatches; use ratatui::text::{Line, Span, Text}; +use std::error::Error; use std::slice::Iter; /* Type of the sorting of module list */ @@ -99,12 +100,14 @@ impl KernelModules<'_> { args, style, }; - kernel_modules.refresh(); + if let Err(e) = kernel_modules.refresh() { + eprintln!("{e}"); + } kernel_modules } /* Parse kernel modules from '/proc/modules'. */ - pub fn refresh(&mut self) { + pub fn refresh(&mut self) -> Result<(), Box> { let mut module_list: Vec> = Vec::new(); /* Set the command for reading kernel modules and execute it. */ let mut module_read_cmd = String::from("cat /proc/modules"); @@ -114,8 +117,8 @@ impl KernelModules<'_> { SortType::Dependent => module_read_cmd += " | sort -n -r -t ' ' -k3", _ => {} } - let modules_content = util::exec_cmd("sh", &["-c", &module_read_cmd]) - .expect("failed to read /proc/modules"); + let modules_content = util::exec_cmd("sh", &["-c", &module_read_cmd])?; + /* Parse content for module name, size and related information. */ for line in modules_content.lines() { let columns: Vec<&str> = line.split_whitespace().collect(); @@ -138,6 +141,7 @@ impl KernelModules<'_> { self.default_list = module_list.clone(); self.list = module_list; self.scroll_list(ScrollDirection::Top); + Ok(()) } /** diff --git a/src/kernel/mod.rs b/src/kernel/mod.rs index dd55b33..e7b2446 100644 --- a/src/kernel/mod.rs +++ b/src/kernel/mod.rs @@ -34,6 +34,6 @@ impl Kernel { pub fn refresh(&mut self) { self.logs.refresh(); self.info.refresh(); - self.modules.refresh(); + let _ = self.modules.refresh(); } }