Index: ChangeLog =================================================================== RCS file: /sources/grub/grub2/ChangeLog,v retrieving revision 1.262 diff -u -r1.262 ChangeLog --- ChangeLog 9 May 2006 20:11:11 -0000 1.262 +++ ChangeLog 12 May 2006 15:02:30 -0000 @@ -1,3 +1,16 @@ +2006-05-12 Andrew Apted + + * include/grub/term.h: changed API of grub_checkkey() to + return a boolean value (1 = key available, 0 = none). + + * commands/i386/pc/play.c (grub_cmd_play): Likewise. + * kern/i386/pc/startup.S (grub_console_checkkey): Likewise. + * normal/menu.c (run_menu): Likewise. + * term/i386/pc/serial.c (grub_serial_checkkey): Likewise. + (serial_hw_init): Likewise. + * term/ieee1275/ofconsole.c (grub_ofconsole_checkkey): Likewise. + * util/console.c (grub_ncurses_checkkey): Likewise. + 2006-05-09 Vesa Jaaskelainen * video/i386/pc/vbe.c (grub_video_vbe_fill_rect): Corrected bounds Index: commands/i386/pc/play.c =================================================================== RCS file: /sources/grub/grub2/commands/i386/pc/play.c,v retrieving revision 1.1 diff -u -r1.1 play.c --- commands/i386/pc/play.c 3 Dec 2005 16:18:27 -0000 1.1 +++ commands/i386/pc/play.c 12 May 2006 15:02:30 -0000 @@ -186,7 +186,7 @@ while (grub_file_read (file, (void *) &buf, sizeof (struct note)) == sizeof (struct note) - && buf.pitch != T_FINE && grub_checkkey () < 0) + && buf.pitch != T_FINE && ! grub_checkkey ()) { grub_dprintf ("play", "pitch = %d, duration = %d\n", buf.pitch, @@ -204,7 +204,7 @@ } to = grub_get_rtc () + BASE_TEMPO * buf.duration / tempo; - while (((unsigned int) grub_get_rtc () <= to) && (grub_checkkey () < 0)) + while (((unsigned int) grub_get_rtc () <= to) && ! grub_checkkey ()) ; } @@ -213,7 +213,7 @@ grub_file_close (file); - while (grub_checkkey () > 0) + while (grub_checkkey ()) grub_getkey (); return 0; Index: include/grub/term.h =================================================================== RCS file: /sources/grub/grub2/include/grub/term.h,v retrieving revision 1.10 diff -u -r1.10 term.h --- include/grub/term.h 15 Oct 2005 09:22:31 -0000 1.10 +++ include/grub/term.h 12 May 2006 15:02:31 -0000 @@ -140,7 +140,8 @@ encoded in Unicode. */ grub_ssize_t (*getcharwidth) (grub_uint32_t c); - /* Check if any input character is available. */ + /* Check if any input character is available. + The return value is boolean (1 = available, 0 = none). */ int (*checkkey) (void); /* Get a character. */ Index: kern/i386/pc/startup.S =================================================================== RCS file: /sources/grub/grub2/kern/i386/pc/startup.S,v retrieving revision 1.22 diff -u -r1.22 startup.S --- kern/i386/pc/startup.S 6 May 2006 22:33:51 -0000 1.22 +++ kern/i386/pc/startup.S 12 May 2006 15:02:33 -0000 @@ -1446,7 +1446,7 @@ /* * int grub_console_checkkey (void) - * if there is a character pending, return it; otherwise return -1 + * if there is a character pending, return 1; otherwise return 0 * BIOS call "INT 16H Function 01H" to check whether a character is pending * Call with %ah = 0x1 * Return: @@ -1467,15 +1467,11 @@ movb $0x1, %ah int $0x16 - jz notpending + jz notpending - movw %ax, %dx - DATA32 jmp pending + incl %edx notpending: - decl %edx - -pending: DATA32 call real_to_prot .code32 Index: normal/menu.c =================================================================== RCS file: /sources/grub/grub2/normal/menu.c,v retrieving revision 1.16 diff -u -r1.16 menu.c --- normal/menu.c 7 May 2006 18:28:24 -0000 1.16 +++ normal/menu.c 12 May 2006 15:02:33 -0000 @@ -340,7 +340,7 @@ return default_entry; } - if (grub_checkkey () >= 0 || timeout < 0) + if (grub_checkkey () || timeout < 0) { c = GRUB_TERM_ASCII_CHAR (grub_getkey ()); Index: term/i386/pc/serial.c =================================================================== RCS file: /sources/grub/grub2/term/i386/pc/serial.c,v retrieving revision 1.2 diff -u -r1.2 serial.c --- term/i386/pc/serial.c 13 Nov 2005 15:47:09 -0000 1.2 +++ term/i386/pc/serial.c 12 May 2006 15:02:33 -0000 @@ -254,10 +254,7 @@ static int grub_serial_checkkey (void) { - if (fill_input_buf (1)) - return input_buf[0]; - else - return -1; + return (fill_input_buf (1) > 0); } /* The serial version of getkey. */ @@ -310,7 +307,7 @@ outb (serial_settings.port + UART_MCR, UART_ENABLE_MODEM); /* Drain the input buffer. */ - while (grub_serial_checkkey () != -1) + while (grub_serial_checkkey ()) (void) grub_serial_getkey (); /* FIXME: should check if the serial terminal was found. */ Index: term/ieee1275/ofconsole.c =================================================================== RCS file: /sources/grub/grub2/term/ieee1275/ofconsole.c,v retrieving revision 1.9 diff -u -r1.9 ofconsole.c --- term/ieee1275/ofconsole.c 10 Nov 2005 01:57:52 -0000 1.9 +++ term/ieee1275/ofconsole.c 12 May 2006 15:02:33 -0000 @@ -196,7 +196,7 @@ return 1; } - return -1; + return 0; } static int Index: util/console.c =================================================================== RCS file: /sources/grub/grub2/util/console.c,v retrieving revision 1.13 diff -u -r1.13 console.c --- util/console.c 21 Aug 2005 07:22:51 -0000 1.13 +++ util/console.c 12 May 2006 15:02:33 -0000 @@ -131,7 +131,7 @@ /* Check for SAVED_CHAR. This should not be true, because this means checkkey is called twice continuously. */ if (saved_char != ERR) - return saved_char; + return 1; wtimeout (stdscr, 100); c = getch (); @@ -139,10 +139,10 @@ if (c != ERR) { saved_char = c; - return c; + return 1; } - return -1; + return 0; } static int