- if (waitpid(pid, &status, 0) == -1) {
- pb_log("%s: waitpid failed: %s\n", __func__,
- strerror(errno));
- return -1;
- }
+ pb_log("Attempting to resolve resource %s->%s with parser %s\n",
+ opt->option->id, name, parser->name);
+ parser->resolve_resource(handler, res);
+
+ return res->resolved;
+}
+
+static bool boot_option_resolve(struct discover_boot_option *opt,
+ struct device_handler *handler)
+{
+ return resource_resolve(opt->boot_image, "boot_image", opt, handler) &&
+ resource_resolve(opt->initrd, "initrd", opt, handler) &&
+ resource_resolve(opt->dtb, "dtb", opt, handler) &&
+ resource_resolve(opt->icon, "icon", opt, handler);
+}
+
+static void boot_option_finalise(struct device_handler *handler,
+ struct discover_boot_option *opt)
+{
+ assert(boot_option_is_resolved(opt));
+
+ /* check that the parsers haven't set any of the final data */
+ assert(!opt->option->boot_image_file);
+ assert(!opt->option->initrd_file);
+ assert(!opt->option->dtb_file);
+ assert(!opt->option->icon_file);
+ assert(!opt->option->device_id);