summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreldaniz <eldanizbabayev@protonmail.com>2024-04-07 23:06:27 +0200
committerGitHub <noreply@github.com>2024-04-08 00:06:27 +0300
commiteb91117a0c61fe0a95d654651207761f9a186c48 (patch)
treea31e1ef9e632519e92a7c7dfcfd3dbd3ae628d28
parent56a8ba78688a909de9591809f9a5138e33df4a9e (diff)
fix: Do not panic when /proc/modules does not exist (#139)
-rw-r--r--src/kernel/lkm.rs12
-rw-r--r--src/kernel/mod.rs2
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();
}
}