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:
parent
b28bbc4ef5
commit
42a5b3fcc7
4 changed files with 17 additions and 6 deletions
13
ChangeLog
13
ChangeLog
|
@ -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>
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue