diff -NurbP --minimal grub-0.93/stage2/builtins.c grub-0.93-lock/stage2/builtins.c --- grub-0.93/stage2/builtins.c Wed Dec 4 05:41:57 2002 +++ grub-0.93-lock/stage2/builtins.c Sun Mar 9 18:07:58 2003 @@ -4054,6 +4054,7 @@ if (term_bitmap & ~(1 << default_term)) { int time1, time2 = -1; + int locked = 0; /* XXX: Disable the pager. */ count_lines = -1; @@ -4073,10 +4074,28 @@ { if (term_table[i].checkkey () >= 0) { - (void) term_table[i].getkey (); - default_term = i; + int c = term_table[i].getkey (); + switch (c) + { + case '\021': + locked = 0; + break; + + case '\023': + locked = 1; + break; + + case '\r': + case '\n': + default_term = i; goto end; + break; + + default: + break; + } + } } } @@ -4084,7 +4103,7 @@ /* Prompt the user, once per sec. */ if ((time1 = getrtsecs ()) != time2 && time1 != 0xFF) { - if (! no_message) + if (! no_message && ! locked) { /* Need to set CURRENT_TERM to each of selected terminals. */ @@ -4092,7 +4111,7 @@ if (term_bitmap & (1 << i)) { current_term = term_table + i; - grub_printf ("\rPress any key to continue.\n"); + grub_putchar ('.'); } /* Restore CURRENT_TERM. */ @@ -4100,7 +4119,7 @@ } time2 = time1; - if (to > 0) + if ((! locked) && (to > 0)) to--; } }