2008-01-05 Robert Millan <rmh@aybabtu.com>

* kern/env.c (grub_env_context_open): Propagate hooks for global
        variables to new context.

        * kern/main.c (grub_set_root_dev): Export `root' variable.
This commit is contained in:
robertmh 2008-01-05 12:04:35 +00:00
parent ddf8f6add7
commit 182dd4e568
3 changed files with 18 additions and 7 deletions

View file

@ -1,3 +1,10 @@
2008-01-05 Robert Millan <rmh@aybabtu.com>
* kern/env.c (grub_env_context_open): Propagate hooks for global
variables to new context.
* kern/main.c (grub_set_root_dev): Export `root' variable.
2008-01-05 Robert Millan <rmh@aybabtu.com> 2008-01-05 Robert Millan <rmh@aybabtu.com>
* util/biosdisk.c (get_os_disk): Check for devfs-style IDE and SCSI * util/biosdisk.c (get_os_disk): Check for devfs-style IDE and SCSI

View file

@ -1,7 +1,7 @@
/* env.c - Environment variables */ /* env.c - Environment variables */
/* /*
* GRUB -- GRand Unified Bootloader * GRUB -- GRand Unified Bootloader
* Copyright (C) 2003,2005,2006,2007 Free Software Foundation, Inc. * Copyright (C) 2003,2005,2006,2007,2008 Free Software Foundation, Inc.
* *
* GRUB is free software: you can redistribute it and/or modify * GRUB is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -96,11 +96,14 @@ grub_env_context_open (void)
for (var = context->prev->vars[i]; var; var = var->next) for (var = context->prev->vars[i]; var; var = var->next)
{ {
if (var->type == GRUB_ENV_VAR_GLOBAL) if (var->type == GRUB_ENV_VAR_GLOBAL)
if (grub_env_set (var->name, var->value) != GRUB_ERR_NONE) {
{ if (grub_env_set (var->name, var->value) != GRUB_ERR_NONE)
grub_env_context_close (); {
return grub_errno; grub_env_context_close ();
} return grub_errno;
}
grub_register_variable_hook (var->name, var->read_hook, var->write_hook);
}
} }
} }

View file

@ -1,7 +1,7 @@
/* main.c - the kernel main routine */ /* main.c - the kernel main routine */
/* /*
* GRUB -- GRand Unified Bootloader * GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003,2005 Free Software Foundation, Inc. * Copyright (C) 2002,2003,2005,2006,2008 Free Software Foundation, Inc.
* *
* GRUB is free software: you can redistribute it and/or modify * GRUB is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -78,6 +78,7 @@ grub_set_root_dev (void)
const char *prefix; const char *prefix;
grub_register_variable_hook ("root", 0, grub_env_write_root); grub_register_variable_hook ("root", 0, grub_env_write_root);
grub_env_export ("root");
prefix = grub_env_get ("prefix"); prefix = grub_env_get ("prefix");