Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- commands/of_node.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/commands/of_node.c b/commands/of_node.c index a370e26..bf9799c 100644 --- a/commands/of_node.c +++ b/commands/of_node.c @@ -39,6 +39,7 @@ static int do_of_node(int argc, char *argv[]) int create = 0; char *path = NULL; struct device_node *node = NULL; + struct device_node *root; while ((opt = getopt(argc, argv, "cd")) > 0) { switch (opt) { @@ -57,27 +58,19 @@ static int do_of_node(int argc, char *argv[]) path = argv[optind]; } - if (create) { - char *name; + root = of_get_root_node(); + if (!root) { + printf("root node not set\n"); + return -ENOENT; + } + if (create) { if (!path) return COMMAND_ERROR_USAGE; - name = xstrdup(basename(path)); - path = dirname(path); - - node = of_find_node_by_path(path); - if (!node) { - printf("Cannot find nodepath %s\n", path); - free(name); - return -ENOENT; - } - - debug("create node \"%s\" \"%s\"\n", path, name); - - of_new_node(node, name); - - free(name); + node = of_create_node(root, path); + if (!node) + return -EINVAL; return 0; } -- 1.7.10.4 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox