Skip to content

Commit 3d70e37

Browse files
committed
fix: export HeaderError
1 parent b749e23 commit 3d70e37

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "dtb-walker"
33
description = "A simple package for DTB depth-first walking."
4-
version = "0.1.0"
4+
version = "0.1.1"
55
edition = "2021"
66
authors = ["YdrMaster <[email protected]>"]
77
repository = "https://github.com/YdrMaster/dtb-walker.git"

examples/qemu-virt.rs

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use dtb_walker::{utils::indent, Dtb, DtbObj, WalkOperation};
1+
use dtb_walker::{utils::indent, Dtb, DtbObj, HeaderError, WalkOperation};
22

33
const DEVICE_TREE: &[u8] = include_bytes!("qemu-virt.dtb");
44
const INDENT_WIDTH: usize = 4;
@@ -11,7 +11,14 @@ fn main() {
1111
.copy_from_nonoverlapping(DEVICE_TREE.as_ptr() as _, aligned.len());
1212
}
1313

14-
let dtb = unsafe { Dtb::from_raw_parts(aligned.as_ptr() as _) }.unwrap();
14+
let dtb = match unsafe { Dtb::from_raw_parts(aligned.as_ptr() as _) } {
15+
Ok(ans) => ans,
16+
Err(HeaderError::LastCompVersion) => {
17+
// ignore!
18+
unsafe { Dtb::from_raw_parts_unchecked(aligned.as_ptr() as _) }
19+
}
20+
Err(e) => panic!("Verify dtb header failed: {e:?}"),
21+
};
1522
dtb.walk(|path, obj| match obj {
1623
DtbObj::SubNode { name } => {
1724
println!("{}{path}/{}", indent(path.level(), INDENT_WIDTH), unsafe {

src/lib.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ pub use property::{PHandle, Property, Reg, Str, StrList};
1616
pub mod utils {
1717
pub use crate::indent::indent;
1818
}
19+
pub use header::HeaderError;
1920

20-
use header::{FdtHeader, HeaderError};
21+
use header::FdtHeader;
2122
use property::RegCfg;
2223
use structure_block::StructureBlock;
2324
use walker::Walker;

0 commit comments

Comments
 (0)