From 731ae0c1c7c0458a257e75c55b7739881dc2d5ed Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Tue, 18 Sep 2012 11:52:19 +0200 Subject: [PATCH 041/471] * grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN on mac. * grub-core/term/ieee1275/console.c (grub_console_init_lately): Use ieee1275-nocursor if GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN is set. * grub-core/term/terminfo.c (grub_terminfo_set_current): Add new type ieee1275-nocursor. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): New value GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN. --- ChangeLog | 11 +++++++++++ grub-core/kern/ieee1275/cmain.c | 1 + grub-core/term/ieee1275/console.c | 3 ++- grub-core/term/terminfo.c | 15 ++++++++++++--- include/grub/ieee1275/ieee1275.h | 4 +++- 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index b524cf6..3752a79 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2012-09-18 Vladimir Serbinenko + * grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set + GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN on mac. + * grub-core/term/ieee1275/console.c (grub_console_init_lately): Use + ieee1275-nocursor if GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN is set. + * grub-core/term/terminfo.c (grub_terminfo_set_current): Add new type + ieee1275-nocursor. + * include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): New value + GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN. + +2012-09-18 Vladimir Serbinenko + * grub-core/loader/i386/linux.c (grub_cmd_linux): Fix incorrect le-conversion. Reported by: BURETTE, Bernard. diff --git a/grub-core/kern/ieee1275/cmain.c b/grub-core/kern/ieee1275/cmain.c index dd04d39..789669a 100644 --- a/grub-core/kern/ieee1275/cmain.c +++ b/grub-core/kern/ieee1275/cmain.c @@ -117,6 +117,7 @@ grub_ieee1275_find_options (void) grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS); grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_OFNET_SUFFIX); grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_VIRT_TO_REAL_BROKEN); + grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN); break; } } diff --git a/grub-core/term/ieee1275/console.c b/grub-core/term/ieee1275/console.c index a8dfcff..93b81f4 100644 --- a/grub-core/term/ieee1275/console.c +++ b/grub-core/term/ieee1275/console.c @@ -247,9 +247,10 @@ grub_console_init_lately (void) if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_ANSI)) type = "dumb"; + else if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN)) + type = "ieee1275-nocursor"; else type = "ieee1275"; - grub_terminfo_init (); grub_terminfo_output_register (&grub_console_term_output, type); } diff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c index d421e4e..a0f8d18 100644 --- a/grub-core/term/terminfo.c +++ b/grub-core/term/terminfo.c @@ -143,7 +143,8 @@ grub_terminfo_set_current (struct grub_term_output *term, return grub_errno; } - if (grub_strcmp ("ieee1275", str) == 0) + if (grub_strcmp ("ieee1275", str) == 0 + || grub_strcmp ("ieee1275-nocursor", str) == 0) { data->name = grub_strdup ("ieee1275"); data->gotoxy = grub_strdup ("\e[%i%p1%d;%p2%dH"); @@ -153,8 +154,16 @@ grub_terminfo_set_current (struct grub_term_output *term, data->cls = grub_strdup (" \e[2J"); data->reverse_video_on = grub_strdup ("\e[7m"); data->reverse_video_off = grub_strdup ("\e[m"); - data->cursor_on = grub_strdup ("\e[?25h"); - data->cursor_off = grub_strdup ("\e[?25l"); + if (grub_strcmp ("ieee1275", str) == 0) + { + data->cursor_on = grub_strdup ("\e[?25h"); + data->cursor_off = grub_strdup ("\e[?25l"); + } + else + { + data->cursor_on = 0; + data->cursor_off = 0; + } data->setcolor = grub_strdup ("\e[3%p1%dm\e[4%p2%dm"); return grub_errno; } diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h index 38a75fd..ee9b707 100644 --- a/include/grub/ieee1275/ieee1275.h +++ b/include/grub/ieee1275/ieee1275.h @@ -123,7 +123,9 @@ enum grub_ieee1275_flag GRUB_IEEE1275_FLAG_VIRT_TO_REAL_BROKEN, - GRUB_IEEE1275_FLAG_BROKEN_REPEAT + GRUB_IEEE1275_FLAG_BROKEN_REPEAT, + + GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN, }; extern int EXPORT_FUNC(grub_ieee1275_test_flag) (enum grub_ieee1275_flag flag); -- 1.8.2.1