diff -NurbP --minimal grub-0.93-post/post.h grub-0.93-post-lock/post.h --- grub-0.93-post/post.h Sun Mar 9 18:13:08 2003 +++ grub-0.93-post-lock/post.h Sun Mar 9 18:16:55 2003 @@ -29,5 +29,7 @@ #define POST_TIMEOUT_EVEN 0xd0 #define POST_TIMEOUT_ODD 0xdf +#define POST_TIMEOUT_LOCKED 0xc5 + #endif /* POST_HEADER */ diff -NurbP --minimal grub-0.93-post/stage2/builtins.c grub-0.93-post-lock/stage2/builtins.c --- grub-0.93-post/stage2/builtins.c Sun Mar 9 18:03:09 2003 +++ grub-0.93-post-lock/stage2/builtins.c Sun Mar 9 18:12:07 2003 @@ -4124,6 +4124,7 @@ if (term_bitmap & ~(1 << default_term)) { int time1, time2 = -1; + int locked = 0; /* XXX: Disable the pager. */ count_lines = -1; @@ -4143,10 +4144,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; + } + } } } @@ -4154,7 +4173,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. */ @@ -4162,7 +4181,7 @@ if (term_bitmap & (1 << i)) { current_term = term_table + i; - grub_printf ("\rPress any key to continue.\n"); + grub_putchar ('.'); } /* Restore CURRENT_TERM. */ @@ -4171,12 +4190,19 @@ time2 = time1; + if (! locked) + { if (to > 0) to--; #ifdef SUPPORT_PARPOST parport_post((to%2)? POST_TIMEOUT_ODD : POST_TIMEOUT_EVEN); + } + else + { + parport_post(POST_TIMEOUT_LOCKED); #endif + } } } }