[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[2040] 2009-03-22 Yoshinori K.
From: |
Yoshinori K. Okuji |
Subject: |
[2040] 2009-03-22 Yoshinori K. |
Date: |
Sun, 22 Mar 2009 10:05:31 +0000 |
Revision: 2040
http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2040
Author: okuji
Date: 2009-03-22 10:05:31 +0000 (Sun, 22 Mar 2009)
Log Message:
-----------
2009-03-22 Yoshinori K. Okuji <address@hidden>
* 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):
Modified Paths:
--------------
trunk/grub2/ChangeLog
trunk/grub2/commands/configfile.c
trunk/grub2/include/grub/normal.h
trunk/grub2/normal/main.c
Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog 2009-03-22 00:37:49 UTC (rev 2039)
+++ trunk/grub2/ChangeLog 2009-03-22 10:05:31 UTC (rev 2040)
@@ -1,3 +1,14 @@
+2009-03-22 Yoshinori K. Okuji <address@hidden>
+
+ * 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 <address@hidden>
* kern/powerpc/ieee1275/startup.S: Replace EXT_C(start) with
Modified: trunk/grub2/commands/configfile.c
===================================================================
--- trunk/grub2/commands/configfile.c 2009-03-22 00:37:49 UTC (rev 2039)
+++ trunk/grub2/commands/configfile.c 2009-03-22 10:05:31 UTC (rev 2040)
@@ -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_env_context_open ();
}
- grub_normal_execute (args[0], 1);
+ grub_normal_execute (args[0], 1, ! new_env);
if (new_env)
grub_env_context_close ();
Modified: trunk/grub2/include/grub/normal.h
===================================================================
--- trunk/grub2/include/grub/normal.h 2009-03-22 00:37:49 UTC (rev 2039)
+++ trunk/grub2/include/grub/normal.h 2009-03-22 10:05:31 UTC (rev 2040)
@@ -75,7 +75,7 @@
*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,
Modified: trunk/grub2/normal/main.c
===================================================================
--- trunk/grub2/normal/main.c 2009-03-22 00:37:49 UTC (rev 2039)
+++ trunk/grub2/normal/main.c 2009-03-22 10:05:31 UTC (rev 2040)
@@ -164,8 +164,8 @@
}
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;
@@ -184,7 +184,7 @@
classes_head->next = 0;
classes_tail = classes_head;
- menu = grub_env_get_data_slot("menu");
+ menu = grub_env_get_data_slot ("menu");
if (! menu)
return grub_error (GRUB_ERR_MENU, "no menu context");
@@ -236,7 +236,8 @@
{
/* 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 @@
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 @@
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,7 +447,13 @@
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 @@
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 @@
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,14 +659,17 @@
grub_errno = GRUB_ERR_NONE;
}
- if (menu && menu->size)
+ if (! batch)
{
- grub_menu_viewer_show_menu (menu, nested);
- if (nested)
- free_menu (menu);
+ if (menu && menu->size)
+ {
+ grub_menu_viewer_show_menu (menu, nested);
+ if (nested)
+ free_menu (menu);
+ }
+ else
+ grub_cmdline_run (nested);
}
- else
- grub_cmdline_run (nested);
}
static grub_err_t
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [2040] 2009-03-22 Yoshinori K.,
Yoshinori K. Okuji <=