This implements saving an environment variable with a given value without having to set that variable first, as suggested by Pavel here:
http://lists.gnu.org/archive/html/grub-devel/2009-06/msg00190.html 2009-09-02 Colin Watson <cjwat...@ubuntu.com> * commands/loadenv.c (grub_cmd_save_env): Allow an optional explicit value (`save_env variable_name=value'). (GRUB_MOD_INIT (loadenv)): Update save_env summary. Index: commands/loadenv.c =================================================================== --- commands/loadenv.c (revision 2558) +++ commands/loadenv.c (working copy) @@ -351,18 +351,32 @@ while (argc) { - char *value; + char *equals; + char *value = NULL; - value = grub_env_get (args[0]); + equals = grub_strchr (args[0], '='); + if (equals) + { + *equals = 0; + value = equals + 1; + } + + if (! value) + value = grub_env_get (args[0]); if (value) { if (! grub_envblk_set (envblk, args[0], value)) { grub_error (GRUB_ERR_BAD_ARGUMENT, "environment block too small"); + if (equals) + *equals = '='; goto fail; } } + if (equals) + *equals = '='; + argc--; args++; } @@ -396,7 +410,7 @@ cmd_save = grub_register_extcmd ("save_env", grub_cmd_save_env, GRUB_COMMAND_FLAG_BOTH, - "save_env [-f FILE] variable_name [...]", + "save_env [-f FILE] variable_name[=value] [...]", "Save variables to environment block file.", options); } -- Colin Watson [cjwat...@ubuntu.com] _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel