diff options
author | Geoff Levand <geoffrey.levand@am.sony.com> | 2009-01-21 16:26:59 -0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2009-02-01 11:54:10 +1100 |
commit | 5a1cb18519a0140ad49c460d99be2fb399efb802 (patch) | |
tree | 1543660f4bb4425098eb2c983f9ba42c8b9537c0 /lib | |
parent | 73df817d55376240d17ced8c2b6d89c4f17c4a63 (diff) | |
download | petitboot-5a1cb18519a0140ad49c460d99be2fb399efb802.zip petitboot-5a1cb18519a0140ad49c460d99be2fb399efb802.tar.gz |
Add boot_option_copy routine
Add the convenience routine boot_option_copy(). Does a deep copy.
Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pb-protocol/pb-protocol.c | 19 | ||||
-rw-r--r-- | lib/pb-protocol/pb-protocol.h | 2 |
2 files changed, 21 insertions, 0 deletions
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. * diff --git a/lib/pb-protocol/pb-protocol.h b/lib/pb-protocol/pb-protocol.h index 399c824..c8ce36b 100644 --- a/lib/pb-protocol/pb-protocol.h +++ b/lib/pb-protocol/pb-protocol.h @@ -41,6 +41,8 @@ struct boot_option { struct list_item list; }; +struct boot_option *boot_option_copy(void* ctx, const struct boot_option *opt); + int pb_protocol_device_len(struct device *dev); int pb_protocol_serialise_string(char *pos, const char *str); |