Re: gettext: version string in normal/main.c
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
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
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
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