aboutsummaryrefslogtreecommitdiff
path: root/tree.c
diff options
context:
space:
mode:
authorDaniel Lezcano <daniel.lezcano@linaro.org>2011-06-08 23:30:00 +0200
committerDaniel Lezcano <daniel.lezcano@free.fr>2011-06-08 23:30:00 +0200
commit357dd8afb93fc6e08073ce7608107dc5f44fc853 (patch)
treea3307679f4e674149929d20f26d120a25a0d6e8b /tree.c
parent7801c2de6ab4407368dbc76adb685e206caac961 (diff)
downloadpowerdebug-357dd8afb93fc6e08073ce7608107dc5f44fc853.tar.gz
add 'find' function for the tree
That will be useful to search for a specific node name. Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Diffstat (limited to 'tree.c')
-rw-r--r--tree.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/tree.c b/tree.c
index e681f4f..7466e31 100644
--- a/tree.c
+++ b/tree.c
@@ -223,3 +223,20 @@ int tree_for_each(struct tree *tree, tree_cb_t cb, void *data)
return tree_for_each(tree->next, cb, data);
}
+
+struct tree *tree_find(struct tree *tree, const char *name)
+{
+ struct tree *t;
+
+ if (!tree)
+ return NULL;
+
+ if (!strcmp(tree->name, name))
+ return tree;
+
+ t = tree_find(tree->child, name);
+ if (t)
+ return t;
+
+ return tree_find(tree->next, name);
+}