X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=mime-node.c;h=d26bb445db142173dd3e38b0c4dec53d5da1341b;hp=760c55f63aa7fe08fa2f267fe2de34ecddea780d;hb=c48797b498ba8dc46fb323a8a7f2cde4d41d3123;hpb=bb189220a323e3140198161234ed54bf98175469 diff --git a/mime-node.c b/mime-node.c index 760c55f6..d26bb445 100644 --- a/mime-node.c +++ b/mime-node.c @@ -236,3 +236,30 @@ mime_node_child (const mime_node_t *parent, int child) } return _mime_node_create (parent, sub); } + +static mime_node_t * +_mime_node_seek_dfs_walk (mime_node_t *node, int *n) +{ + mime_node_t *ret = NULL; + int i; + + if (*n == 0) + return node; + + *n -= 1; + for (i = 0; i < node->nchildren && !ret; i++) { + mime_node_t *child = mime_node_child (node, i); + ret = _mime_node_seek_dfs_walk (child, n); + if (!ret) + talloc_free (child); + } + return ret; +} + +mime_node_t * +mime_node_seek_dfs (mime_node_t *node, int n) +{ + if (n < 0) + return NULL; + return _mime_node_seek_dfs_walk (node, &n); +}