Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86a1b633 authored by Scott Wood's avatar Scott Wood Committed by Paul Mackerras
Browse files

[POWERPC] bootwrapper: Make ft_create_node() pay attention to the parent parameter.

parent 8941c0c4
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -961,19 +961,26 @@ int ft_del_prop(struct ft_cxt *cxt, const void *phandle, const char *propname)
	return -1;
}

void *ft_create_node(struct ft_cxt *cxt, const void *parent, const char *path)
void *ft_create_node(struct ft_cxt *cxt, const void *parent, const char *name)
{
	struct ft_atom atom;
	char *p, *next;
	int depth = 0;

	if (parent) {
		p = ft_node_ph2node(cxt, parent);
		if (!p)
			return NULL;
	} else {
		p = ft_root_node(cxt);
	}

	while ((next = ft_next(cxt, p, &atom)) != NULL) {
		switch (atom.tag) {
		case OF_DT_BEGIN_NODE:
			++depth;
			if (depth == 1 && strcmp(atom.name, path) == 0)
				/* duplicate node path, return error */
			if (depth == 1 && strcmp(atom.name, name) == 0)
				/* duplicate node name, return error */
				return NULL;
			break;
		case OF_DT_END_NODE:
@@ -982,7 +989,7 @@ void *ft_create_node(struct ft_cxt *cxt, const void *parent, const char *path)
				break;
			/* end of node, insert here */
			cxt->p = p;
			ft_begin_node(cxt, path);
			ft_begin_node(cxt, name);
			ft_end_node(cxt);
			return p;
		}
+1 −0
Original line number Diff line number Diff line
@@ -108,5 +108,6 @@ void *ft_get_parent(struct ft_cxt *cxt, const void *phandle);
void *ft_find_node_by_prop_value(struct ft_cxt *cxt, const void *prev,
                                 const char *propname, const char *propval,
                                 int proplen);
void *ft_create_node(struct ft_cxt *cxt, const void *parent, const char *name);

#endif /* FLATDEVTREE_H */