2010-03-01 Vladimir Serbinenko <phcoder@gmail.com>

Wait for user entry basing on presence of output rather than on errors.

	* include/grub/normal.h (grub_normal_get_line_counter): New proto.
	(grub_install_newline_hook): Likewise.
	* normal/main.c (GRUB_MOD_INIT): Call grub_install_newline_hook.
	* normal/menu.c (show_menu): Check line_counter to determine presence
	of output.
	* normal/term.c (grub_normal_line_counter): New variable.
	(grub_normal_get_line_counter): New function.
	(grub_install_newline_hook): Likewise.
This commit is contained in:
Vladimir 'phcoder' Serbinenko 2010-03-01 20:58:45 +01:00
parent 5382b1e4a8
commit c6f2fe52f1
5 changed files with 38 additions and 7 deletions

View file

@ -30,6 +30,14 @@ static unsigned grub_more_lines;
/* If the more pager is active. */
static int grub_more;
static int grub_normal_line_counter = 0;
int
grub_normal_get_line_counter (void)
{
return grub_normal_line_counter;
}
static void
process_newline (void)
{
@ -41,6 +49,8 @@ process_newline (void)
height = grub_term_height (cur);
grub_more_lines++;
grub_normal_line_counter++;
if (grub_more && grub_more_lines >= height - 1)
{
char key;
@ -76,6 +86,11 @@ grub_set_more (int onoff)
grub_more--;
grub_more_lines = 0;
}
void
grub_install_newline_hook (void)
{
grub_newline_hook = process_newline;
}
@ -150,7 +165,6 @@ grub_terminal_autoload_free (void)
grub_term_output_autoload = NULL;
}
/* Read the file terminal.lst for auto-loading. */
void
read_terminal_list (void)