diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-10-14 15:21:14 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-10-14 15:24:03 +0800 |
commit | d2a32f50660d32885ee20b6e3b5bbabfecd2b4e9 (patch) | |
tree | a2da382364d70bcf8df4240e6b9447b1d4f1df90 /discover | |
parent | dbc31f80771461921a0339ff21c11e00203307ec (diff) | |
download | petitboot-d2a32f50660d32885ee20b6e3b5bbabfecd2b4e9.zip petitboot-d2a32f50660d32885ee20b6e3b5bbabfecd2b4e9.tar.gz |
discover/grub2: Allow URL resources
Allow URL-format specifiers for GRUB2 resources.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover')
-rw-r--r-- | discover/grub2/grub2.c | 11 | ||||
-rw-r--r-- | discover/grub2/grub2.h | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/discover/grub2/grub2.c b/discover/grub2/grub2.c index fb3d866..22d42df 100644 --- a/discover/grub2/grub2.c +++ b/discover/grub2/grub2.c @@ -2,6 +2,7 @@ #include <assert.h> #include <talloc/talloc.h> +#include <url/url.h> #include <discover/resource.h> #include <discover/parser.h> @@ -36,14 +37,20 @@ struct grub2_resource_info { }; /* we use slightly different resources for grub2 */ -struct resource *create_grub2_resource(void *ctx, +struct resource *create_grub2_resource(struct discover_boot_option *opt, struct discover_device *orig_device, const char *root, const char *path) { struct grub2_resource_info *info; struct resource *res; - res = talloc(ctx, struct resource); + if (strstr(path, "://")) { + struct pb_url *url = pb_url_parse(opt, path); + if (url) + return create_url_resource(opt, url); + } + + res = talloc(opt, struct resource); if (root) { info = talloc(res, struct grub2_resource_info); diff --git a/discover/grub2/grub2.h b/discover/grub2/grub2.h index 5ee8503..1515d69 100644 --- a/discover/grub2/grub2.h +++ b/discover/grub2/grub2.h @@ -167,7 +167,7 @@ void script_register_function(struct grub2_script *script, void register_builtins(struct grub2_script *script); /* resources */ -struct resource *create_grub2_resource(void *ctx, +struct resource *create_grub2_resource(struct discover_boot_option *opt, struct discover_device *orig_device, const char *root, const char *path); |