summaryrefslogtreecommitdiffstats
path: root/discover
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2013-09-16 16:53:22 +0800
committerJeremy Kerr <jk@ozlabs.org>2013-09-24 13:14:59 +0800
commit4bf4d14afbc46d6bbf11839b1f8fdc9bf66dd16d (patch)
tree229ba19ba930fe795f0cf2a5bac290bc9ba90691 /discover
parent1513dd5d05f6408a64e19ea18cfaeb0cb8c5fb73 (diff)
downloadtalos-petitboot-4bf4d14afbc46d6bbf11839b1f8fdc9bf66dd16d.tar.gz
talos-petitboot-4bf4d14afbc46d6bbf11839b1f8fdc9bf66dd16d.zip
discover/grub2: Implement 'search' command
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover')
-rw-r--r--discover/grub2/builtins.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/discover/grub2/builtins.c b/discover/grub2/builtins.c
index cd56dcc..8171b8d 100644
--- a/discover/grub2/builtins.c
+++ b/discover/grub2/builtins.c
@@ -97,6 +97,32 @@ static int builtin_initrd(struct grub2_script *script,
return 0;
}
+static int builtin_search(struct grub2_script *script,
+ void *data __attribute__((unused)),
+ int argc, char *argv[])
+{
+ const char *env_var, *spec;
+ int i;
+
+ env_var = NULL;
+
+ for (i = 1; i < argc - 1; i++) {
+ if (!strncmp(argv[i], "--set=", strlen("--set="))) {
+ env_var = argv[i] + strlen("--set=");
+ break;
+ }
+ }
+
+ if (!env_var)
+ return 0;
+
+ spec = argv[argc - 1];
+
+ script_env_set(script, env_var, spec);
+
+ return 0;
+}
+
static struct {
const char *name;
grub2_function fn;
@@ -112,6 +138,10 @@ static struct {
{
.name = "initrd",
.fn = builtin_initrd,
+ },
+ {
+ .name = "search",
+ .fn = builtin_search,
}
};
OpenPOWER on IntegriCloud