Add boot_option_copy routine
authorGeoff Levand <geoffrey.levand@am.sony.com>
Thu, 22 Jan 2009 00:26:59 +0000 (16:26 -0800)
committerJeremy Kerr <jk@ozlabs.org>
Sun, 1 Feb 2009 00:54:10 +0000 (11:54 +1100)
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>
lib/pb-protocol/pb-protocol.c
lib/pb-protocol/pb-protocol.h

index d5f8b2f80a667fe058b27dec706a33f0bd6f86f6..0252b9aaa18bf12c3c2d46efa920f0171a013218 100644 (file)
  *   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.
  *
index 399c824b4e97f4189288aef7e337bd025674e537..c8ce36bb328d7944ddd29c2c4558da37a065dbb7 100644 (file)
@@ -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);