Re: gettext: version string in normal/main.c

2009-12-19 Thread Carles Pina i Estany

Hi,

On Dec/19/2009, Carles Pina i Estany wrote:
> 
> Hi,
> 
> On Dec/19/2009, Carles Pina i Estany wrote:
> 
> > Something to improve before committing?
> 
> New patch with a missing grub_free.

reviewed in IRC and committed.

-- 
Carles Pina i Estany
http://pinux.info


___
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel


Re: gettext: version string in normal/main.c

2009-12-19 Thread Carles Pina i Estany

Hi,

On Dec/19/2009, Carles Pina i Estany wrote:

> On Dec/19/2009, Carles Pina i Estany wrote:
> 
> > Something to improve before committing?

when this will be reviewed and committed I will adapt (some things has
changed) the last part of normal/* files . I sent a week ago aprox. but
needs some changes because it conflicts.

After that I will do other changes in commands/*, and this is mainly all
for Grub2 loader gettext. I'm sure that there are other strings that I
will keep doing but at least from the standard user point of view is
quite gettextizzed.

Then I'll do some documentation about how to test, more testing using
gfxterm, update the .pot in TP and keep working with the utils part.

As Robert pointed should be done soon so translators can translate,
review, spot some deficiencies and sooner better than later.

Cheers,

-- 
Carles Pina i Estany
http://pinux.info


___
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel


Re: gettext: version string in normal/main.c

2009-12-18 Thread Carles Pina i Estany

Hi,

On Dec/19/2009, Carles Pina i Estany wrote:

> Something to improve before committing?

New patch with a missing grub_free.

-- 
Carles Pina i Estany
http://pinux.info
=== modified file 'ChangeLog'
--- ChangeLog	2009-12-19 00:05:41 +
+++ ChangeLog	2009-12-19 01:27:34 +
@@ -1,5 +1,18 @@
 2009-12-19  Carles Pina i Estany  
 
+	* include/grub/normal.h (utf8_to_ucs4): New declaration.
+	(grub_print_ucs4): Likewise.
+	(getstringwidth): Likewise.
+	* normal/main.c (grub_normal_init_page): Gettextize version string.
+	* normal/menu_text.c (utf8_to_ucs4): New declaration.
+	(getstringwidth): Remove `static' qualifier (now used in
+	normal/main.c).  Use `utf8_to_ucs4'.
+	(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  
+
 	* normal/menu_text.c (STANDARD_MARGIN): New macro.
 	(print_message_indented): Add `margin_left' and `margin_right'
 	parameters.

=== modified file 'include/grub/normal.h'
--- include/grub/normal.h	2009-08-24 23:55:06 +
+++ include/grub/normal.h	2009-12-19 01:21:13 +
@@ -73,6 +73,12 @@ void grub_parse_color_name_pair (grub_ui
 
 /* Defined in `menu_text.c'.  */
 void grub_wait_after_message (void);
+int utf8_to_ucs4 (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 getstringwidth (grub_uint32_t * str,
+			const grub_uint32_t * last_position);
 
 /* Defined in `handler.c'.  */
 void read_handler_list (void);

=== modified file 'normal/main.c'
--- normal/main.c	2009-12-08 00:08:52 +
+++ normal/main.c	2009-12-19 01:54:42 +
@@ -385,22 +385,32 @@ read_config_file (const char *config)
 void
 grub_normal_init_page (void)
 {
-  grub_uint8_t width, margin;
-
-#define TITLE ("GNU GRUB  version " PACKAGE_VERSION)
+  grub_cls ();
+  const char *msg = _("GNU GRUB  version %s");
 
-  width = grub_getwh () >> 8;
-  margin = (width - (sizeof(TITLE) + 7)) / 2;
+  char *msg_formatted = grub_malloc (grub_strlen(msg) + grub_strlen(PACKAGE_VERSION));
 
-  grub_cls ();
-  grub_putchar ('\n');
+  grub_sprintf (msg_formatted, msg, PACKAGE_VERSION);
 
-  while (margin--)
-grub_putchar (' ');
+  grub_uint32_t *unicode_msg;
+  grub_uint32_t *last_position;
+  
+  int msg_len;
 
-  grub_printf ("%s\n\n", TITLE);
+  msg_len = utf8_to_ucs4 (msg_formatted, &unicode_msg, &last_position);
+  
+  if (msg_len < 0)
+{
+  return;
+}
 
-#undef TITLE
+  int posx = getstringwidth (unicode_msg, last_position);
+  posx = (GRUB_TERM_WIDTH - posx) / 2;
+  grub_gotoxy (posx, 1);
+
+  grub_print_ucs4 (unicode_msg, last_position);
+  grub_printf("\n\n");
+  grub_free (unicode_msg);
 }
 
 static int reader_nested;

=== modified file 'normal/menu_text.c'
--- normal/menu_text.c	2009-12-19 00:05:41 +
+++ normal/menu_text.c	2009-12-19 01:20:58 +
@@ -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,7 +66,34 @@ grub_print_ucs4 (const grub_uint32_t * s
 }
 }
 
-static grub_ssize_t
+int
+utf8_to_ucs4 (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
 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,
 (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 = utf8_to_ucs4 (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;

=== modified file 'po/POTFILES'
--- po/POTFILES	2009-12-05 11:25:07 +
+++ po/POTFILES	2009-12-19 0

gettext: version string in normal/main.c

2009-12-18 Thread Carles Pina i Estany

Hi,

I've gettextitzzed the version string.

Something to improve before committing?
It's all right?

Thanks,

-- 
Carles Pina i Estany
http://pinux.info
=== modified file 'ChangeLog'
--- ChangeLog	2009-12-19 00:05:41 +
+++ ChangeLog	2009-12-19 01:27:34 +
@@ -1,5 +1,18 @@
 2009-12-19  Carles Pina i Estany  
 
+	* include/grub/normal.h (utf8_to_ucs4): New declaration.
+	(grub_print_ucs4): Likewise.
+	(getstringwidth): Likewise.
+	* normal/main.c (grub_normal_init_page): Gettextize version string.
+	* normal/menu_text.c (utf8_to_ucs4): New declaration.
+	(getstringwidth): Remove `static' qualifier (now used in
+	normal/main.c).  Use `utf8_to_ucs4'.
+	(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  
+
 	* normal/menu_text.c (STANDARD_MARGIN): New macro.
 	(print_message_indented): Add `margin_left' and `margin_right'
 	parameters.

=== modified file 'include/grub/normal.h'
--- include/grub/normal.h	2009-08-24 23:55:06 +
+++ include/grub/normal.h	2009-12-19 01:21:13 +
@@ -73,6 +73,12 @@ void grub_parse_color_name_pair (grub_ui
 
 /* Defined in `menu_text.c'.  */
 void grub_wait_after_message (void);
+int utf8_to_ucs4 (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 getstringwidth (grub_uint32_t * str,
+			const grub_uint32_t * last_position);
 
 /* Defined in `handler.c'.  */
 void read_handler_list (void);

=== modified file 'normal/main.c'
--- normal/main.c	2009-12-08 00:08:52 +
+++ normal/main.c	2009-12-19 01:36:39 +
@@ -385,22 +385,31 @@ read_config_file (const char *config)
 void
 grub_normal_init_page (void)
 {
-  grub_uint8_t width, margin;
+  grub_cls ();
+  const char *msg = _("GNU GRUB  version %s");
 
-#define TITLE ("GNU GRUB  version " PACKAGE_VERSION)
+  char *msg_formatted = grub_malloc (grub_strlen(msg) + grub_strlen(PACKAGE_VERSION));
 
-  width = grub_getwh () >> 8;
-  margin = (width - (sizeof(TITLE) + 7)) / 2;
+  grub_sprintf (msg_formatted, msg, PACKAGE_VERSION);
 
-  grub_cls ();
-  grub_putchar ('\n');
+  grub_uint32_t *unicode_msg;
+  grub_uint32_t *last_position;
+  
+  int msg_len;
 
-  while (margin--)
-grub_putchar (' ');
+  msg_len = utf8_to_ucs4 (msg_formatted, &unicode_msg, &last_position);
+  
+  if (msg_len < 0)
+{
+  return;
+}
 
-  grub_printf ("%s\n\n", TITLE);
+  int posx = 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");
 }
 
 static int reader_nested;

=== modified file 'normal/menu_text.c'
--- normal/menu_text.c	2009-12-19 00:05:41 +
+++ normal/menu_text.c	2009-12-19 01:20:58 +
@@ -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,7 +66,34 @@ grub_print_ucs4 (const grub_uint32_t * s
 }
 }
 
-static grub_ssize_t
+int
+utf8_to_ucs4 (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
 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,
 (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 = utf8_to_ucs4 (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;

=== modified file 'po/POTFILES'
--- po/POTFILES	2009-12-05 11:25:07 +
+++ po/POTFILES	2009-12-19 00:32:03 +
@@ -11,5 +11,6 @@ util/mkisofs/rock