+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.
(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>
if (new_env)
{
grub_cls ();
- grub_env_context_open ();
+ grub_env_context_open (1);
}
grub_normal_execute (args[0], 1, ! new_env);
/*
* 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
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);
}
grub_err_t
-grub_env_context_open (void)
+grub_env_context_open (int export)
{
struct grub_env_context *context;
int i;
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)
{