diff options
author | eldaniz <eldanizbabayev@protonmail.com> | 2024-04-07 23:06:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-08 00:06:27 +0300 |
commit | eb91117a0c61fe0a95d654651207761f9a186c48 (patch) | |
tree | a31e1ef9e632519e92a7c7dfcfd3dbd3ae628d28 | |
parent | 56a8ba78688a909de9591809f9a5138e33df4a9e (diff) |
fix: Do not panic when /proc/modules does not exist (#139)
-rw-r--r-- | src/kernel/lkm.rs | 12 | ||||
-rw-r--r-- | src/kernel/mod.rs | 2 |
2 files changed, 9 insertions, 5 deletions
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<dyn Error>> { let mut module_list: Vec<Vec<String>> = 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(); } } |