From 5a1cb18519a0140ad49c460d99be2fb399efb802 Mon Sep 17 00:00:00 2001 From: Geoff Levand Date: Wed, 21 Jan 2009 16:26:59 -0800 Subject: Add boot_option_copy routine Add the convenience routine boot_option_copy(). Does a deep copy. Signed-off-by: Geoff Levand Signed-off-by: Jeremy Kerr --- lib/pb-protocol/pb-protocol.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'lib/pb-protocol/pb-protocol.c') diff --git a/lib/pb-protocol/pb-protocol.c b/lib/pb-protocol/pb-protocol.c index d5f8b2f..0252b9a 100644 --- a/lib/pb-protocol/pb-protocol.c +++ b/lib/pb-protocol/pb-protocol.c @@ -38,6 +38,25 @@ * 4-byte len, id */ +/* Deep copy a boot_option. +*/ +struct boot_option *boot_option_copy(void* ctx, const struct boot_option *opt) +{ + struct boot_option *new = talloc(ctx, struct boot_option); + + if (new) { + new->id = talloc_strdup(new, opt->id); + new->name = talloc_strdup(new, opt->name); + new->description = talloc_strdup(new, opt->description); + new->icon_file = talloc_strdup(new, opt->icon_file); + new->boot_image_file = talloc_strdup(new, opt->boot_image_file); + new->initrd_file = talloc_strdup(new, opt->initrd_file); + new->boot_args = talloc_strdup(new, opt->boot_args); + memset(&new->list, 0, sizeof(new->list)); + } + + return new; +} /* Write a string into the buffer, starting at pos. * -- cgit v1.2.1