]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2009-12-19 Carles Pina i Estany <carles@pina.cat>
authorcarles <carles@pinux>
Sat, 19 Dec 2009 23:00:30 +0000 (23:00 +0000)
committercarles <carles@pinux>
Sat, 19 Dec 2009 23:00:30 +0000 (23:00 +0000)
* include/grub/normal.h (grub_utf8_to_ucs4): New declaration.
(grub_print_ucs4_alloc): Likewise.
(grub_getstringwidth): Likewise.
* normal/main.c (grub_normal_init_page): Gettextize version string.
* normal/menu_text.c (grub_utf8_to_ucs4_alloc): New definition.
(getstringwidth): Renamed to ...
(grub_getstringwidth): ... this. Remove `static' qualifier (now used
in normal/main.c).  Use `grub_utf8_to_ucs4_alloc'.
(grub_print_ucs4): Remove `static' qualifer (now used in
normal/main.c).
* po/POTFILES: Add normal/main.c.

ChangeLog
include/grub/normal.h
normal/main.c
normal/menu_text.c
po/POTFILES

index cc616c07867d0235eb0bb1d00aaeb2c6d6ba11f4..077d0e438531c6ed8adc437063e3ef19a23a07d5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2009-12-19  Carles Pina i Estany  <carles@pina.cat>
+
+       * include/grub/normal.h (grub_utf8_to_ucs4): New declaration.
+       (grub_print_ucs4_alloc): Likewise.
+       (grub_getstringwidth): Likewise.
+       * normal/main.c (grub_normal_init_page): Gettextize version string.
+       * normal/menu_text.c (grub_utf8_to_ucs4_alloc): New definition.
+       (getstringwidth): Renamed to ...
+       (grub_getstringwidth): ... this. Remove `static' qualifier (now used
+       in normal/main.c).  Use `grub_utf8_to_ucs4_alloc'.
+       (grub_print_ucs4): Remove `static' qualifer (now used in
+       normal/main.c).
+       * po/POTFILES: Add normal/main.c.
+
 2009-12-19  Carles Pina i Estany  <carles@pina.cat>
 
        * normal/menu_text.c (STANDARD_MARGIN): New macro.
index feebc85b11524a7189bd295fea9bed34b626594e..ae520c3f9896b3706bec65830a7728382f207376 100644 (file)
@@ -73,6 +73,12 @@ void grub_parse_color_name_pair (grub_uint8_t *ret, const char *name);
 
 /* Defined in `menu_text.c'.  */
 void grub_wait_after_message (void);
+int grub_utf8_to_ucs4_alloc (const char *msg, grub_uint32_t **unicode_msg,
+                       grub_uint32_t **last_position);
+void grub_print_ucs4 (const grub_uint32_t * str,
+                       const grub_uint32_t * last_position);
+grub_ssize_t grub_getstringwidth (grub_uint32_t * str,
+                       const grub_uint32_t * last_position);
 
 /* Defined in `handler.c'.  */
 void read_handler_list (void);
index f080a69713e8dfada5f65cb1dea5536d8415eb20..6a238a08275d33d65ff422cd901e239120821a4e 100644 (file)
@@ -385,22 +385,35 @@ read_config_file (const char *config)
 void
 grub_normal_init_page (void)
 {
-  grub_uint8_t width, margin;
-
-#define TITLE ("GNU GRUB  version " PACKAGE_VERSION)
-
-  width = grub_getwh () >> 8;
-  margin = (width - (sizeof(TITLE) + 7)) / 2;
+  int msg_len;
+  int posx;
+  const char *msg = _("GNU GRUB  version %s");
 
+  char *msg_formatted = grub_malloc (grub_strlen(msg) +
+                                    grub_strlen(PACKAGE_VERSION));
+  
   grub_cls ();
-  grub_putchar ('\n');
 
-  while (margin--)
-    grub_putchar (' ');
+  grub_sprintf (msg_formatted, msg, PACKAGE_VERSION);
+
+  grub_uint32_t *unicode_msg;
+  grub_uint32_t *last_position;
+  
+  msg_len = grub_utf8_to_ucs4_alloc (msg_formatted, 
+                                    &unicode_msg, &last_position);
+  
+  if (msg_len < 0)
+    {
+      return;
+    }
 
-  grub_printf ("%s\n\n", TITLE);
+  posx = grub_getstringwidth (unicode_msg, last_position);
+  posx = (GRUB_TERM_WIDTH - posx) / 2;
+  grub_gotoxy (posx, 1);
 
-#undef TITLE
+  grub_print_ucs4 (unicode_msg, last_position);
+  grub_printf("\n\n");
+  grub_free (unicode_msg);
 }
 
 static int reader_nested;
index b9529b38b318e4b05993a73d97ee96f349a4faeb..f1ac76d358b3ea9c5fcce6a9344fd8b335980aeb 100644 (file)
@@ -55,7 +55,7 @@ print_spaces (int number_spaces)
     grub_putchar (' ');
 }
 
-static void
+void
 grub_print_ucs4 (const grub_uint32_t * str,
                 const grub_uint32_t * last_position)
 {
@@ -66,8 +66,35 @@ grub_print_ucs4 (const grub_uint32_t * str,
     }
 }
 
-static grub_ssize_t
-getstringwidth (grub_uint32_t * str, const grub_uint32_t * last_position)
+int
+grub_utf8_to_ucs4_alloc (const char *msg, grub_uint32_t **unicode_msg,
+                       grub_uint32_t **last_position)
+{
+  grub_ssize_t msg_len = grub_strlen (msg);
+
+  *unicode_msg = grub_malloc (grub_strlen (msg) * sizeof (grub_uint32_t));
+  
+  if (!*unicode_msg)
+    {
+      grub_printf ("utf8_to_ucs4 ERROR1: %s", msg);
+      return -1;
+    }
+
+  msg_len = grub_utf8_to_ucs4 (*unicode_msg, msg_len,
+                             (grub_uint8_t *) msg, -1, 0);
+
+  *last_position = *unicode_msg + msg_len;
+
+  if (msg_len < 0)
+    {
+      grub_printf ("utf8_to_ucs4 ERROR2: %s", msg);
+      grub_free (*unicode_msg);
+    }
+  return msg_len;
+}
+
+grub_ssize_t
+grub_getstringwidth (grub_uint32_t * str, const grub_uint32_t * last_position)
 {
   grub_ssize_t width = 0;
 
@@ -87,29 +114,17 @@ print_message_indented (const char *msg, int margin_left, int margin_right)
     (margin_left + margin_right);
 
   grub_uint32_t *unicode_msg;
+  grub_uint32_t *last_position;
 
-  grub_ssize_t msg_len = grub_strlen (msg);
-
-  unicode_msg = grub_malloc (msg_len * sizeof (*unicode_msg));
+  int msg_len;
 
-  msg_len = grub_utf8_to_ucs4 (unicode_msg, msg_len,
-                              (grub_uint8_t *) msg, -1, 0);
-
-  if (!unicode_msg)
-    {
-      grub_printf ("print_message_indented ERROR1: %s", msg);
-      return;
-    }
+  msg_len = grub_utf8_to_ucs4_alloc (msg, &unicode_msg, &last_position);
 
   if (msg_len < 0)
     {
-      grub_printf ("print_message_indented ERROR2: %s", msg);
-      grub_free (unicode_msg);
       return;
     }
 
-  const grub_uint32_t *last_position = unicode_msg + msg_len;
-
   grub_uint32_t *current_position = unicode_msg;
 
   grub_uint32_t *next_new_line = unicode_msg;
@@ -123,7 +138,7 @@ print_message_indented (const char *msg, int margin_left, int margin_right)
       
       next_new_line = (grub_uint32_t *) last_position;
 
-      while (getstringwidth (current_position, next_new_line) > line_len
+      while (grub_getstringwidth (current_position, next_new_line) > line_len
             || (*next_new_line != ' ' && next_new_line > current_position &&
                 next_new_line != last_position))
        {
index 7d213c357d84a9c0bc678ec69e14ec8ea9e8d81a..a7969a15c0e590f202908543ad5589d9d9895814 100644 (file)
@@ -11,5 +11,6 @@ util/mkisofs/rock.c
 util/mkisofs/tree.c
 util/mkisofs/write.c
 
+normal/main.c
 normal/menu_entry.c
 normal/menu_text.c