2009-03-22 Yoshinori K. Okuji <okuji@enbug.org>

* kern/env.c (grub_env_context_open): Added an argument to specify
    whether a new context inherits exported variables from current
    one. This is useful when making a sandbox to interpret a config
    file.
    All callers updated.

    * include/grub/env.h (grub_env_context_open): Updated the prototype.
This commit is contained in:
okuji 2009-03-22 10:45:06 +00:00
parent b28bbc4ef5
commit 42a5b3fcc7
4 changed files with 17 additions and 6 deletions

View file

@ -1,3 +1,13 @@
2009-03-22 Yoshinori K. Okuji <okuji@enbug.org>
* kern/env.c (grub_env_context_open): Added an argument to specify
whether a new context inherits exported variables from current
one. This is useful when making a sandbox to interpret a config
file.
All callers updated.
* include/grub/env.h (grub_env_context_open): Updated the prototype.
2009-03-22 Yoshinori K. Okuji <okuji@enbug.org>
* kern/env.c (grub_env_context_close): Fix memory leaks.
@ -11,7 +21,8 @@
(read_command_list): Prevent being executed twice.
(read_fs_list): Likewise.
* include/grub/normal.h (grub_normal_execute):
* include/grub/normal.h (grub_normal_execute): Updated the
prototype.
2009-03-22 Pavel Roskin <proski@gno.org>

View file

@ -36,7 +36,7 @@ grub_cmd_source (grub_command_t cmd, int argc, char **args)
if (new_env)
{
grub_cls ();
grub_env_context_open ();
grub_env_context_open (1);
}
grub_normal_execute (args[0], 1, ! new_env);

View file

@ -1,6 +1,6 @@
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2003,2005,2006,2007 Free Software Foundation, Inc.
* Copyright (C) 2003,2005,2006,2007,2009 Free Software Foundation, Inc.
*
* GRUB is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -60,7 +60,7 @@ void EXPORT_FUNC(grub_env_iterate) (int (*func) (struct grub_env_var *var));
grub_err_t EXPORT_FUNC(grub_register_variable_hook) (const char *name,
grub_env_read_hook_t read_hook,
grub_env_write_hook_t write_hook);
grub_err_t EXPORT_FUNC(grub_env_context_open) (void);
grub_err_t EXPORT_FUNC(grub_env_context_open) (int export);
grub_err_t EXPORT_FUNC(grub_env_context_close) (void);
grub_err_t EXPORT_FUNC(grub_env_export) (const char *name);

View file

@ -75,7 +75,7 @@ grub_env_find (const char *name)
}
grub_err_t
grub_env_context_open (void)
grub_env_context_open (int export)
{
struct grub_env_context *context;
int i;
@ -95,7 +95,7 @@ grub_env_context_open (void)
for (var = context->prev->vars[i]; var; var = var->next)
{
if (var->type == GRUB_ENV_VAR_GLOBAL)
if (export && var->type == GRUB_ENV_VAR_GLOBAL)
{
if (grub_env_set (var->name, var->value) != GRUB_ERR_NONE)
{