]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2005-11-09 Hollis Blanchard <hollis@penguinppc.org>
authorhollisb <hollisb@localhost>
Wed, 9 Nov 2005 06:07:54 +0000 (06:07 +0000)
committerhollisb <hollisb@localhost>
Wed, 9 Nov 2005 06:07:54 +0000 (06:07 +0000)
* 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.

ChangeLog
term/ieee1275/ofconsole.c

index 10e8f84597c3a223aae638a92f2c2c8127972a9d..63e6920914cbd9c79b733749e7e708541dace447 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2005-11-09  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 ceeaf3e699d10d8b734551f1f01f97b0c32d18f2..614ec95a8042168836f7732b7d70e50969397744 100644 (file)
@@ -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