case_detail/
case_detail.rs1use fmd_adm::{FmdAdm, NvList, NvValue};
2
3fn print_nvlist(nvl: &NvList, indent: usize) {
4 let pad = " ".repeat(indent);
5 for (name, value) in nvl {
6 match value {
7 NvValue::NvList(inner) => {
8 println!("{pad}{name} = (embedded nvlist)");
9 print_nvlist(inner, indent + 1);
10 }
11 NvValue::NvListArray(arr) => {
12 println!("{pad}{name} = (array of {} nvlists)", arr.len());
13 for (i, inner) in arr.iter().enumerate() {
14 println!("{pad} [{i}]:");
15 print_nvlist(inner, indent + 2);
16 }
17 }
18 other => {
19 println!("{pad}{name} = {other:?}");
20 }
21 }
22 }
23}
24
25fn main() {
26 let adm = FmdAdm::open().expect("failed to open fmd adm handle");
27 let cases = adm.cases(None).expect("failed to list cases");
28
29 if let Some(c) = cases.first() {
30 println!("Case {} ({})\n", c.uuid, c.code);
31 if let Some(event) = &c.event {
32 print_nvlist(event, 0);
33 } else {
34 println!(" (no event data)");
35 }
36 } else {
37 println!("No cases found.");
38 }
39}