* [ppc patch] fix line-wrapping
@ 2005-11-08 4:55 Hollis Blanchard
2005-11-08 18:20 ` Marco Gerards
2005-11-08 18:28 ` Dennis Clarke
0 siblings, 2 replies; 5+ messages in thread
From: Hollis Blanchard @ 2005-11-08 4:55 UTC (permalink / raw)
To: The development of GRUB 2
[-- Attachment #1: Type: text/plain, Size: 225 bytes --]
This patch fixes the line-wrapping problems we've been having on PPC. I
rearranged grub_ofconsole_getwh() slightly to avoid excessive
indentation. I will apply soon unless people criticize my ChangeLog
entry. ;)
-Hollis
[-- Attachment #2: linewrap.txt --]
[-- Type: text/plain, Size: 4340 bytes --]
Index: ChangeLog
===================================================================
RCS file: /cvsroot/grub/grub2/ChangeLog,v
retrieving revision 1.193
diff -u -p -r1.193 ChangeLog
--- ChangeLog 7 Nov 2005 22:28:55 -0000 1.193
+++ ChangeLog 8 Nov 2005 04:50:12 -0000
@@ -1,3 +1,12 @@
+2005-11-03 Hollis Blanchard <hollis@penguinppc.org>
+
+ * term/ieee1275/ofconsole.c (grub_ofconsole_width): New variable.
+ (grub_ofconsole_height): Likewise.
+ (grub_ofconsole_putchar): If grub_curr_x exceeds console width,
+ manually insert a '\n'.
+ (grub_ofconsole_getwh): Set and return `grub_ofconsole_width' and
+ `grub_ofconsole_height'. Return early if these are already set.
+
2005-11-07 Vincent Pelletier <subdino2004@yahoo.fr>
* conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Add
Index: term/ieee1275/ofconsole.c
===================================================================
RCS file: /cvsroot/grub/grub2/term/ieee1275/ofconsole.c,v
retrieving revision 1.7
diff -u -p -r1.7 ofconsole.c
--- term/ieee1275/ofconsole.c 4 Nov 2005 04:50:14 -0000 1.7
+++ term/ieee1275/ofconsole.c 8 Nov 2005 04:50:13 -0000
@@ -28,6 +28,9 @@
static grub_ieee1275_ihandle_t stdout_ihandle;
static grub_ieee1275_ihandle_t stdin_ihandle;
+static grub_uint8_t grub_ofconsole_width;
+static grub_uint8_t grub_ofconsole_height;
+
static int grub_curr_x;
static int grub_curr_y;
@@ -79,7 +82,11 @@ grub_ofconsole_putchar (grub_uint32_t c)
grub_curr_x = 0;
}
else
- grub_curr_x++;
+ {
+ grub_curr_x++;
+ if (grub_curr_x > grub_ofconsole_width)
+ grub_putcode ('\n');
+ }
grub_ieee1275_write (stdout_ihandle, &chr, 1, 0);
}
@@ -220,50 +227,48 @@ grub_ofconsole_getwh (void)
grub_ieee1275_ihandle_t options;
char *val;
grub_ssize_t lval;
- static grub_uint8_t w, h;
- /* Once we have them, don't ask them again. */
- if (!w || !h)
+ if (grub_ofconsole_width && grub_ofconsole_height)
+ return (grub_ofconsole_width << 8) | grub_ofconsole_height;
+
+ if (! grub_ieee1275_finddevice ("/options", &options)
+ && options != (grub_ieee1275_ihandle_t) -1)
{
- if (! grub_ieee1275_finddevice ("/options", &options)
- && options != (grub_ieee1275_ihandle_t) -1)
- {
- if (! grub_ieee1275_get_property_length (options, "screen-#columns",
- &lval) && lval != -1)
- {
- val = grub_malloc (lval);
- if (val)
- {
- if (! grub_ieee1275_get_property (options, "screen-#columns",
- val, lval, 0))
- w = (grub_uint8_t) grub_strtoul (val, 0, 10);
-
- grub_free (val);
- }
- }
- if (! grub_ieee1275_get_property_length (options, "screen-#rows",
- &lval) && lval != -1)
- {
- val = grub_malloc (lval);
- if (val)
- {
- if (! grub_ieee1275_get_property (options, "screen-#rows",
- val, lval, 0))
- h = (grub_uint8_t) grub_strtoul (val, 0, 10);
-
- grub_free (val);
- }
- }
+ if (! grub_ieee1275_get_property_length (options, "screen-#columns",
+ &lval) && lval != -1)
+ {
+ val = grub_malloc (lval);
+ if (val)
+ {
+ if (! grub_ieee1275_get_property (options, "screen-#columns",
+ val, lval, 0))
+ grub_ofconsole_width = (grub_uint8_t) grub_strtoul (val, 0, 10);
+
+ grub_free (val);
+ }
+ }
+ if (! grub_ieee1275_get_property_length (options, "screen-#rows",
+ &lval) && lval != -1)
+ {
+ val = grub_malloc (lval);
+ if (val)
+ {
+ if (! grub_ieee1275_get_property (options, "screen-#rows",
+ val, lval, 0))
+ grub_ofconsole_height = (grub_uint8_t) grub_strtoul (val, 0, 10);
+
+ grub_free (val);
+ }
}
}
/* Use a small console by default. */
- if (! w)
- w = 80;
- if (! h)
- h = 24;
+ if (! grub_ofconsole_width)
+ grub_ofconsole_width = 80;
+ if (! grub_ofconsole_height)
+ grub_ofconsole_height = 24;
- return (w << 8) | h;
+ return (grub_ofconsole_width << 8) | grub_ofconsole_height;
}
static void
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [ppc patch] fix line-wrapping
2005-11-08 4:55 [ppc patch] fix line-wrapping Hollis Blanchard
@ 2005-11-08 18:20 ` Marco Gerards
2005-11-09 6:05 ` Hollis Blanchard
2005-11-08 18:28 ` Dennis Clarke
1 sibling, 1 reply; 5+ messages in thread
From: Marco Gerards @ 2005-11-08 18:20 UTC (permalink / raw)
To: The development of GRUB 2
Hollis Blanchard <hollis@penguinppc.org> writes:
> This patch fixes the line-wrapping problems we've been having on
> PPC. I rearranged grub_ofconsole_getwh() slightly to avoid excessive
> indentation. I will apply soon unless people criticize my ChangeLog
> entry. ;)
Great! This was a very annoying bug.
> Index: ChangeLog
> ===================================================================
> RCS file: /cvsroot/grub/grub2/ChangeLog,v
> retrieving revision 1.193
> diff -u -p -r1.193 ChangeLog
> --- ChangeLog 7 Nov 2005 22:28:55 -0000 1.193
> +++ ChangeLog 8 Nov 2005 04:50:12 -0000
> @@ -1,3 +1,12 @@
> +2005-11-03 Hollis Blanchard <hollis@penguinppc.org>
> +
> + * term/ieee1275/ofconsole.c (grub_ofconsole_width): New variable.
> + (grub_ofconsole_height): Likewise.
> + (grub_ofconsole_putchar): If grub_curr_x exceeds console width,
> + manually insert a '\n'.
This won't work if the width can not be read from the firmware. IIRC
the pegasos has such bug. I should have a look at that...
Feel free to apply the patch. :-)
Thanks,
Marco
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [ppc patch] fix line-wrapping
2005-11-08 4:55 [ppc patch] fix line-wrapping Hollis Blanchard
2005-11-08 18:20 ` Marco Gerards
@ 2005-11-08 18:28 ` Dennis Clarke
2005-11-08 18:34 ` Marco Gerards
1 sibling, 1 reply; 5+ messages in thread
From: Dennis Clarke @ 2005-11-08 18:28 UTC (permalink / raw)
To: The development of GRUB 2
On 11/7/05, Hollis Blanchard <hollis@penguinppc.org> wrote:
> This patch fixes the line-wrapping problems we've been having on PPC. I
> rearranged grub_ofconsole_getwh() slightly to avoid excessive
> indentation. I will apply soon unless people criticize my ChangeLog
> entry. ;)
Well I don't like it for .. for .. I don't why! Its the wrong color !
:-)
Thanks for the update. I look forward to the next build of GRUB2 on
my Genesi ODW unit here. I am still looking over my "stuff" for
getting the GRUB2 menu to look nice with old fashioned line drawing
chars.
Dennis
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [ppc patch] fix line-wrapping
2005-11-08 18:28 ` Dennis Clarke
@ 2005-11-08 18:34 ` Marco Gerards
0 siblings, 0 replies; 5+ messages in thread
From: Marco Gerards @ 2005-11-08 18:34 UTC (permalink / raw)
To: The development of GRUB 2
Dennis Clarke <blastwave@gmail.com> writes:
> On 11/7/05, Hollis Blanchard <hollis@penguinppc.org> wrote:
>> This patch fixes the line-wrapping problems we've been having on PPC. I
>> rearranged grub_ofconsole_getwh() slightly to avoid excessive
>> indentation. I will apply soon unless people criticize my ChangeLog
>> entry. ;)
>
> Well I don't like it for .. for .. I don't why! Its the wrong color !
>
> :-)
>
> Thanks for the update. I look forward to the next build of GRUB2 on
> my Genesi ODW unit here. I am still looking over my "stuff" for
> getting the GRUB2 menu to look nice with old fashioned line drawing
> chars.
The problem with this that it is easy to fix, but hard to fix the
right way... So if you fix it, please be careful if it does not break
something else.
--
Marco
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [ppc patch] fix line-wrapping
2005-11-08 18:20 ` Marco Gerards
@ 2005-11-09 6:05 ` Hollis Blanchard
0 siblings, 0 replies; 5+ messages in thread
From: Hollis Blanchard @ 2005-11-09 6:05 UTC (permalink / raw)
To: The development of GRUB 2
On Nov 8, 2005, at 12:20 PM, Marco Gerards wrote:
> Hollis Blanchard <hollis@penguinppc.org> writes:
>
>> Index: ChangeLog
>> ===================================================================
>> RCS file: /cvsroot/grub/grub2/ChangeLog,v
>> retrieving revision 1.193
>> diff -u -p -r1.193 ChangeLog
>> --- ChangeLog 7 Nov 2005 22:28:55 -0000 1.193
>> +++ ChangeLog 8 Nov 2005 04:50:12 -0000
>> @@ -1,3 +1,12 @@
>> +2005-11-03 Hollis Blanchard <hollis@penguinppc.org>
>> +
>> + * term/ieee1275/ofconsole.c (grub_ofconsole_width): New variable.
>> + (grub_ofconsole_height): Likewise.
>> + (grub_ofconsole_putchar): If grub_curr_x exceeds console width,
>> + manually insert a '\n'.
>
> This won't work if the width can not be read from the firmware. IIRC
> the pegasos has such bug. I should have a look at that...
Well, if the firmware does not reveal the size of the console, it
defaults to 80x24 (that's in existing code). I can't think of any
better behavior for this case. The patch stills "works"... :)
> Feel free to apply the patch. :-)
Ok, will do.
-Hollis
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2005-11-09 6:06 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-08 4:55 [ppc patch] fix line-wrapping Hollis Blanchard
2005-11-08 18:20 ` Marco Gerards
2005-11-09 6:05 ` Hollis Blanchard
2005-11-08 18:28 ` Dennis Clarke
2005-11-08 18:34 ` Marco Gerards
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.