aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-05-11 12:18:17 +0200
committerHimbeer <himbeer@disroot.org>2024-05-11 12:19:27 +0200
commit6e55affa04b227a2c529652cb0ac098b59e52dff (patch)
tree89f116a65cd8ff7eaa8a3f0c4268fbcd636a2468
parent5af20fef3504465ce5e28c277fbcd72da7b85c0e (diff)
fdt: Add support for non-exact findPath
-rw-r--r--src/fdt.zig16
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;