All of lore.kernel.org
 help / color / mirror / Atom feed
* [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

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.