X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fresource.c;h=f9019d1408eed5556b100140bd9c86437858e7b4;hp=b4fa9ca3930f350b8622027a793c0a5be427ef55;hb=25e353275fb55192fbd80c3bbe012df17e35a09f;hpb=a5db3ced87f5f24500f785b70af8b8630bc1c077 diff --git a/discover/resource.c b/discover/resource.c index b4fa9ca..f9019d1 100644 --- a/discover/resource.c +++ b/discover/resource.c @@ -34,7 +34,8 @@ static struct discover_device *parse_device_string( return device_lookup_by_name(handler, devstr); } -static void resolve_devpath_against_device(struct resource *res, + +void resolve_resource_against_device(struct resource *res, struct discover_device *dev, const char *path) { char *resolved_path = join_paths(res, dev->mount_path, path); @@ -67,7 +68,7 @@ struct resource *create_devpath_resource(struct discover_boot_option *opt, /* we've been passed a file:// URL, which has no device * specifier. We can resolve against the original * device */ - resolve_devpath_against_device(res, orig_device, + resolve_resource_against_device(res, orig_device, url->path); talloc_free(url); } @@ -76,7 +77,7 @@ struct resource *create_devpath_resource(struct discover_boot_option *opt, /* if there was no device specified, we can resolve now */ if (!pos) { - resolve_devpath_against_device(res, orig_device, devpath); + resolve_resource_against_device(res, orig_device, devpath); return res; } @@ -109,7 +110,7 @@ bool resolve_devpath_resource(struct device_handler *handler, if (!dev) return false; - resolve_devpath_against_device(res, dev, info->path); + resolve_resource_against_device(res, dev, info->path); talloc_free(info); return true; @@ -121,6 +122,7 @@ struct resource *create_url_resource(struct discover_boot_option *opt, struct resource *res; res = talloc(opt, struct resource); + talloc_steal(res, url); res->url = url; res->resolved = true;