2009-03-22 Yoshinori K. Okuji <okuji@enbug.org>
* normal/main.c (grub_normal_execute): Added an argument BATCH to specify if an interactive interface should be provided after reading a config file. All callers updated. (read_command_list): Prevent being executed twice. (read_fs_list): Likewise. * include/grub/normal.h (grub_normal_execute):
This commit is contained in:
parent
fbc00b0ca1
commit
f04f02e496
4 changed files with 47 additions and 19 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
|||
2009-03-22 Yoshinori K. Okuji <okuji@enbug.org>
|
||||
|
||||
* normal/main.c (grub_normal_execute): Added an argument
|
||||
BATCH to specify if an interactive interface should be provided
|
||||
after reading a config file.
|
||||
All callers updated.
|
||||
(read_command_list): Prevent being executed twice.
|
||||
(read_fs_list): Likewise.
|
||||
|
||||
* include/grub/normal.h (grub_normal_execute):
|
||||
|
||||
2009-03-22 Pavel Roskin <proski@gno.org>
|
||||
|
||||
* kern/powerpc/ieee1275/startup.S: Replace EXT_C(start) with
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* configfile.c - command to manually load config file */
|
||||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
* Copyright (C) 2005,2006,2007 Free Software Foundation, Inc.
|
||||
* Copyright (C) 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
|
||||
|
@ -39,7 +39,7 @@ grub_cmd_source (grub_command_t cmd, int argc, char **args)
|
|||
grub_env_context_open ();
|
||||
}
|
||||
|
||||
grub_normal_execute (args[0], 1);
|
||||
grub_normal_execute (args[0], 1, ! new_env);
|
||||
|
||||
if (new_env)
|
||||
grub_env_context_close ();
|
||||
|
|
|
@ -75,7 +75,7 @@ typedef struct grub_menu_execute_callback
|
|||
*grub_menu_execute_callback_t;
|
||||
|
||||
void grub_enter_normal_mode (const char *config);
|
||||
void grub_normal_execute (const char *config, int nested);
|
||||
void grub_normal_execute (const char *config, int nested, int batch);
|
||||
void grub_menu_execute_with_fallback (grub_menu_t menu,
|
||||
grub_menu_entry_t entry,
|
||||
grub_menu_execute_callback_t callback,
|
||||
|
|
|
@ -164,8 +164,8 @@ free_menu_entry_classes (struct grub_menu_entry_class *head)
|
|||
}
|
||||
|
||||
grub_err_t
|
||||
grub_normal_menu_addentry (int argc, const char **args, struct grub_script *script,
|
||||
const char *sourcecode)
|
||||
grub_normal_menu_addentry (int argc, const char **args,
|
||||
struct grub_script *script, const char *sourcecode)
|
||||
{
|
||||
const char *menutitle = 0;
|
||||
const char *menusourcecode;
|
||||
|
@ -236,7 +236,8 @@ grub_normal_menu_addentry (int argc, const char **args, struct grub_script *scri
|
|||
{
|
||||
/* Handle invalid argument. */
|
||||
failed = 1;
|
||||
grub_error (GRUB_ERR_MENU, "invalid argument for menuentry: %s", args[i]);
|
||||
grub_error (GRUB_ERR_MENU,
|
||||
"invalid argument for menuentry: %s", args[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -249,7 +250,8 @@ grub_normal_menu_addentry (int argc, const char **args, struct grub_script *scri
|
|||
else
|
||||
{
|
||||
failed = 1;
|
||||
grub_error (GRUB_ERR_MENU, "too many titles for menuentry: %s", args[i]);
|
||||
grub_error (GRUB_ERR_MENU,
|
||||
"too many titles for menuentry: %s", args[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -382,7 +384,7 @@ void
|
|||
grub_enter_normal_mode (const char *config)
|
||||
{
|
||||
if (grub_setjmp (grub_exit_env) == 0)
|
||||
grub_normal_execute (config, 0);
|
||||
grub_normal_execute (config, 0, 0);
|
||||
}
|
||||
|
||||
/* Initialize the screen. */
|
||||
|
@ -445,6 +447,12 @@ static void
|
|||
read_command_list (void)
|
||||
{
|
||||
const char *prefix;
|
||||
static int first_time = 1;
|
||||
|
||||
/* Make sure that this function does not get executed twice. */
|
||||
if (! first_time)
|
||||
return;
|
||||
first_time = 0;
|
||||
|
||||
prefix = grub_env_get ("prefix");
|
||||
if (prefix)
|
||||
|
@ -558,6 +566,12 @@ static void
|
|||
read_fs_list (void)
|
||||
{
|
||||
const char *prefix;
|
||||
static int first_time = 1;
|
||||
|
||||
/* Make sure that this function does not get executed twice. */
|
||||
if (! first_time)
|
||||
return;
|
||||
first_time = 0;
|
||||
|
||||
prefix = grub_env_get ("prefix");
|
||||
if (prefix)
|
||||
|
@ -627,10 +641,10 @@ read_fs_list (void)
|
|||
grub_fs_autoload_hook = autoload_fs_module;
|
||||
}
|
||||
|
||||
/* Read the config file CONFIG and execute the menu interface or
|
||||
the command-line interface. */
|
||||
/* Read the config file COFIG, and execute the menu interface or
|
||||
the command-line interface if BATCH is false. */
|
||||
void
|
||||
grub_normal_execute (const char *config, int nested)
|
||||
grub_normal_execute (const char *config, int nested, int batch)
|
||||
{
|
||||
grub_menu_t menu = 0;
|
||||
|
||||
|
@ -645,6 +659,8 @@ grub_normal_execute (const char *config, int nested)
|
|||
grub_errno = GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
if (! batch)
|
||||
{
|
||||
if (menu && menu->size)
|
||||
{
|
||||
grub_menu_viewer_show_menu (menu, nested);
|
||||
|
@ -654,6 +670,7 @@ grub_normal_execute (const char *config, int nested)
|
|||
else
|
||||
grub_cmdline_run (nested);
|
||||
}
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
grub_cmd_rescue (struct grub_command *cmd __attribute__ ((unused)),
|
||||
|
|
Loading…
Reference in a new issue