From 9eaeb07a7185d852c7aa10735ecd4e9edf24fb5d Mon Sep 17 00:00:00 2001 From: David Gibson Date: Fri, 11 Jan 2008 14:55:05 +1100 Subject: libfdt: Add fdt_set_name() function This patch adds an fdt_set_name() function to libfdt, mirroring fdt_get_name(). This is a r/w function which alters the name of a given device tree node. Signed-off-by: David Gibson --- libfdt/fdt_rw.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'libfdt') diff --git a/libfdt/fdt_rw.c b/libfdt/fdt_rw.c index 6673f8ec9..a1c70ff15 100644 --- a/libfdt/fdt_rw.c +++ b/libfdt/fdt_rw.c @@ -252,6 +252,30 @@ static int _add_property(void *fdt, int nodeoffset, const char *name, int len, return 0; } +int fdt_set_name(void *fdt, int nodeoffset, const char *name) +{ + char *namep; + int oldlen, newlen; + int err; + + if ((err = rw_check_header(fdt))) + return err; + + namep = (char *)fdt_get_name(fdt, nodeoffset, &oldlen); + if (!namep) + return oldlen; + + newlen = strlen(name); + + err = _blob_splice_struct(fdt, namep, ALIGN(oldlen+1, FDT_TAGSIZE), + ALIGN(newlen+1, FDT_TAGSIZE)); + if (err) + return err; + + memcpy(namep, name, newlen+1); + return 0; +} + int fdt_setprop(void *fdt, int nodeoffset, const char *name, const void *val, int len) { -- cgit v1.2.3