+2008-05-16 Christian Franke <franke@computer.org>
+
+ * commands/cat.c (grub_cmd_cat): Remove non-ESC keys from keyboard queue
+ to ensure that break with ESC will always work.
+ * commands/sleep.c (grub_interruptible_millisleep): Likewise.
+ Remove ESC from keyboard queue.
+
2008-05-16 Christian Franke <franke@computer.org>
* util/biosdisk.c: [__CYGWIN__] Add includes.
grub_file_t file;
char buf[GRUB_DISK_SECTOR_SIZE];
grub_ssize_t size;
+ int key = 0;
if (argc != 1)
return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
if (! file)
return 0;
- while ((size = grub_file_read (file, buf, sizeof (buf))) > 0)
+ while ((size = grub_file_read (file, buf, sizeof (buf))) > 0
+ && key != GRUB_TERM_ESC)
{
int i;
}
}
- if (GRUB_TERM_ASCII_CHAR (grub_checkkey ()) == GRUB_TERM_ESC)
- {
- grub_getkey ();
- break;
- }
+ while (grub_checkkey () >= 0 &&
+ (key = GRUB_TERM_ASCII_CHAR (grub_getkey ())) != GRUB_TERM_ESC)
+ ;
}
grub_putchar ('\n');
end_at = grub_get_rtc () + grub_div_roundup (ms * GRUB_TICKS_PER_SECOND, 1000);
while (grub_get_rtc () < end_at)
- if (GRUB_TERM_ASCII_CHAR (grub_checkkey ()) == GRUB_TERM_ESC)
+ if (grub_checkkey () >= 0 &&
+ GRUB_TERM_ASCII_CHAR (grub_getkey ()) == GRUB_TERM_ESC)
return 1;
return 0;