В Вт., 25/09/2012 в 19:24 +0400, Andrey Borzenkov пишет:
> В Вт., 25/09/2012 в 12:46 +0800, Michael Chang пишет:
> > 2012/9/25 Andrey Borzenkov <arvidj...@gmail.com>:
> > > В Пн., 24/09/2012 в 11:37 +0200, Mads Kiilerich пишет:
> > >> On 09/24/2012 08:51 AM, Michael Chang wrote:
> > >> > We don't insert gettext module if message catalog file missing to
> > >> > prevent error message from being logged.
> [...]
> > >
> > > What about removing this error message altogether? Under OS gettext does
> > > not complaint when catalog does not exist; why should it do it here?
> > > Having English interface is enough indication that message catalog was
> > > not found.
> > 
> > I agree with you. IMHO the problem is it's not emitted directly from
> > gettext module but from common underlying fs level, removing it would
> > lead to other message which is fatal be ignored as well.
> > 
> 
> As far as I can tell it is emitted explicitly when setting "lang":
> 
> grub-core/gettext/gettext.c:grub_gettext_env_write_lang()
> 
>   grub_err_t err;
>   err = grub_gettext_init_ext (&main_context, val, grub_env_get
> ("locale_dir"),
>                                grub_env_get ("prefix"));
>   if (err)
>     grub_print_error ();
> 
> and later. There are some more places which also try to reload catalog.
> 

Attached is prototype patch (tested) which suppresses error return from
grub_text_init_ext(). Proper patch would need to also change function
prototype, as its return value is now useless.

> May be this messages can be turned into debugging message instead of
> error.
> 

That I do not know how to do.
Index: b/grub-core/gettext/gettext.c
===================================================================
--- a/grub-core/gettext/gettext.c
+++ b/grub-core/gettext/gettext.c
@@ -395,6 +395,9 @@ grub_gettext_init_ext (struct grub_gette
   if (!part1 || part1[0] == 0)
     return 0;
 
+  /* It is not an error if message catalog does not exist */
+  grub_error_push ();
+
   err = grub_mofile_open_lang (ctx, part1, part2, locale);
 
   /* ll_CC didn't work, so try ll.  */
@@ -412,7 +415,9 @@ grub_gettext_init_ext (struct grub_gette
 
       grub_free (lang);
     }
-  return err;
+
+  grub_error_pop ();
+  return 0;
 }
 
 static char *
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to