diff options
author | Himbeer <himbeer@disroot.org> | 2024-05-11 12:18:17 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-05-11 12:19:27 +0200 |
commit | 6e55affa04b227a2c529652cb0ac098b59e52dff (patch) | |
tree | 89f116a65cd8ff7eaa8a3f0c4268fbcd636a2468 | |
parent | 5af20fef3504465ce5e28c277fbcd72da7b85c0e (diff) |
fdt: Add support for non-exact findPath
-rw-r--r-- | src/fdt.zig | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/fdt.zig b/src/fdt.zig index 8ae748a..b97e890 100644 --- a/src/fdt.zig +++ b/src/fdt.zig @@ -208,6 +208,22 @@ pub fn findPath(dt: *const Tree, path: []const u8) ?Node { var node = dt.nodes.items[0]; for (std.mem.tokenizeScalar(u8, path, '/')) |segment| { + if (findNode(node.subnodes.items, segment).next()) |result| { + node = result; + } else return null; + } + + return node; +} + +pub fn findPathExact(dt: *const Tree, path: []const u8) ?Node { + if (dt.nodes.items.len < 1) return null; + + path = std.mem.trim(u8, path, "/"); + + var node = dt.nodes.items[0]; + + for (std.mem.tokenizeScalar(u8, path, '/')) |segment| { if (findNodeExact(node.subnodes.items, segment)) |result| { node = result; } else return null; |