X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fevent-parser.c;h=714f75cda436f337364b8c69eb19469f7bb0a5ee;hp=d7c0820083ff8a098383992939d357b2377e6cfc;hb=9f28cabee06b68047f8a61389b7c857c636c329e;hpb=92806cf6bc15f680f75879288df12ea9a87e4608 diff --git a/discover/event-parser.c b/discover/event-parser.c index d7c0820..714f75c 100644 --- a/discover/event-parser.c +++ b/discover/event-parser.c @@ -16,15 +16,17 @@ int parse_user_event(struct discover_context *ctx, struct event *event) { + struct discover_boot_option *d_opt; struct boot_option *opt; struct device *dev; const char *p; dev = ctx->device->device; - opt = talloc_zero(dev, struct boot_option); + d_opt = discover_boot_option_create(ctx, ctx->device); + opt = d_opt->option; - if (!opt) + if (!d_opt) goto fail; p = event_get_param(event, "name"); @@ -48,6 +50,10 @@ int parse_user_event(struct discover_context *ctx, struct event *event) opt->boot_image_file = talloc_strdup(opt, p); + p = event_get_param(event, "initrd"); + if (p) + opt->initrd_file = talloc_strdup(opt, p); + p = event_get_param(event, "args"); assert(p); @@ -56,11 +62,11 @@ int parse_user_event(struct discover_context *ctx, struct event *event) opt->description = talloc_asprintf(opt, "%s %s", opt->boot_image_file, opt->boot_args); - discover_context_add_boot_option(ctx, opt); + discover_context_add_boot_option(ctx, d_opt); return 0; fail: - talloc_free(opt); + talloc_free(d_opt); return -1; }