]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/normal/menu.c (grub_wait_after_message): Add a 10 second
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 29 Aug 2010 23:14:07 +0000 (01:14 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 29 Aug 2010 23:14:07 +0000 (01:14 +0200)
timeout to avoid indefinite boot stalling.

ChangeLog
grub-core/normal/menu.c

index 1f7bbfa6c687cf2ce740ec9330b986609de499d3..095cec7f71d6ee06d4602780cc16408a7625629f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-08-30  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/normal/menu.c (grub_wait_after_message): Add a 10 second
+       timeout to avoid indefinite boot stalling.
+
 2010-08-30  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/normal/color.c (grub_env_write_color_normal): Fix a warning.
index b57990b0d17c15b899936bf19a916de0ef877a27..cc84ce38c186b681c34b70cb53b4ebc9e83f36a9 100644 (file)
@@ -43,9 +43,20 @@ grub_err_t (*grub_gfxmenu_try_hook) (int entry, grub_menu_t menu,
 void
 grub_wait_after_message (void)
 {
+  grub_uint64_t endtime;
   grub_xputs ("\n");
   grub_printf_ (N_("Press any key to continue..."));
-  (void) grub_getkey ();
+  grub_refresh ();
+
+  endtime = grub_get_time_ms () + 10000;
+
+  while (grub_get_time_ms () < endtime)
+    if (grub_checkkey () >= 0)
+      {
+       grub_getkey ();
+       break;
+      }
+
   grub_xputs ("\n");
 }