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>
|
2009-03-22 Yoshinori K. Okuji <okuji@enbug.org>
|
||||||
|
|
||||||
* kern/env.c (grub_env_context_close): Fix memory leaks.
|
* kern/env.c (grub_env_context_close): Fix memory leaks.
|
||||||
|
@ -11,7 +21,8 @@
|
||||||
(read_command_list): Prevent being executed twice.
|
(read_command_list): Prevent being executed twice.
|
||||||
(read_fs_list): Likewise.
|
(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>
|
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)
|
if (new_env)
|
||||||
{
|
{
|
||||||
grub_cls ();
|
grub_cls ();
|
||||||
grub_env_context_open ();
|
grub_env_context_open (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
grub_normal_execute (args[0], 1, ! new_env);
|
grub_normal_execute (args[0], 1, ! new_env);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* GRUB -- GRand Unified Bootloader
|
* 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
|
* 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
|
||||||
|
@ -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_err_t EXPORT_FUNC(grub_register_variable_hook) (const char *name,
|
||||||
grub_env_read_hook_t read_hook,
|
grub_env_read_hook_t read_hook,
|
||||||
grub_env_write_hook_t write_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_context_close) (void);
|
||||||
grub_err_t EXPORT_FUNC(grub_env_export) (const char *name);
|
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_err_t
|
||||||
grub_env_context_open (void)
|
grub_env_context_open (int export)
|
||||||
{
|
{
|
||||||
struct grub_env_context *context;
|
struct grub_env_context *context;
|
||||||
int i;
|
int i;
|
||||||
|
@ -95,7 +95,7 @@ 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 (export && 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)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue