]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Properly register serial terminfo.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 6 Nov 2010 19:40:08 +0000 (20:40 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 6 Nov 2010 19:40:08 +0000 (20:40 +0100)
Reported by: Jordan Uggla

* grub-core/term/serial.c (grub_serial_terminfo_input_template): New
const.
(grub_serial_terminfo_output_template): Likewise.
(grub_cmd_serial): Register "serial" with terminfo.
(GRUB_MOD_INIT(serial)): Fill grub_serial_terminfo_input and
grub_serial_terminfo_output.

ChangeLog
grub-core/term/serial.c

index 906ebec69033af255dee3927a970fff05e4569a8..5185bb380a819ad75e0a6b48b95f881dd2f182ec 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2010-11-06  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Properly register serial terminfo.
+       Reported by: Jordan Uggla
+
+       * grub-core/term/serial.c (grub_serial_terminfo_input_template): New
+       const.
+       (grub_serial_terminfo_output_template): Likewise.
+       (grub_cmd_serial): Register "serial" with terminfo.
+       (GRUB_MOD_INIT(serial)): Fill grub_serial_terminfo_input and
+       grub_serial_terminfo_output.
+
 2010-11-05  Robert Millan  <rmh@gnu.org>
 
        * util/grub-mkconfig.in: Remove gfxterm.mod probe (no longer
index 1ef17aa2535dbbc6494d5121fd5137438574eaa5..d36388359ac42e15a37b4fa57326bbe3fd2e106d 100644 (file)
@@ -69,7 +69,7 @@ serial_fetch (grub_term_input_t term)
   return data->port->driver->fetch (data->port);
 }
 
-struct grub_serial_input_state grub_serial_terminfo_input =
+const struct grub_serial_input_state grub_serial_terminfo_input_template =
   {
     .tinfo =
     {
@@ -77,7 +77,7 @@ struct grub_serial_input_state grub_serial_terminfo_input =
     }
   };
 
-struct grub_serial_output_state grub_serial_terminfo_output =
+const struct grub_serial_output_state grub_serial_terminfo_output_template =
   {
     .tinfo =
     {
@@ -87,6 +87,10 @@ struct grub_serial_output_state grub_serial_terminfo_output =
     }
   };
 
+struct grub_serial_input_state grub_serial_terminfo_input;
+
+struct grub_serial_output_state grub_serial_terminfo_output;
+
 int registered = 0;
 
 static struct grub_term_input grub_serial_term_input =
@@ -216,6 +220,8 @@ grub_cmd_serial (grub_extcmd_context_t ctxt, int argc, char **args)
     {
       if (!registered)
        {
+         grub_terminfo_output_register (&grub_serial_term_output, "vt100");
+
          grub_term_register_input ("serial", &grub_serial_term_input);
          grub_term_register_output ("serial", &grub_serial_term_output);
        }
@@ -337,6 +343,14 @@ GRUB_MOD_INIT(serial)
   cmd = grub_register_extcmd ("serial", grub_cmd_serial, 0,
                              N_("[OPTIONS...]"),
                              N_("Configure serial port."), options);
+  grub_memcpy (&grub_serial_terminfo_output,
+              &grub_serial_terminfo_output_template,
+              sizeof (grub_serial_terminfo_output));
+
+  grub_memcpy (&grub_serial_terminfo_input,
+              &grub_serial_terminfo_input_template,
+              sizeof (grub_serial_terminfo_input));
+              
 #ifndef GRUB_MACHINE_EMU
   grub_ns8250_init ();
 #endif