diff options
-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; |