Bruno Haible <[EMAIL PROTECTED]> wrote:
> Guillaume Chazarain wrote:
>> As it prints a message for the first time, it has to
>> initialize gettext, and I'm not sure this qualifies for the "do as
>> little as possible in a signal handler" rule.
>
> I agree. The list of guaranteed async-safe function calls on POSIX systems
> is listed at
> http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html#tag_02_04_03
>
> fprintf() is not part of it. gettext() neither, nor are the calls made
> by gettext(), namely malloc(), free(), tsearch(), mmap(). So it would seem
> advisable to pre-fetch the translations before the SIGINT happens. Untested
> patch is appended. Unfortunately it forces to remove ngettext() calls, which
> is bad for plural handling. Also you need to check the quote() call whether
> it avoids calling malloc...

Hi Bruno,

Thanks for the patch, but that `cure' seems worse than the disease.
If there is no better way to solve the problem, then I'd consider
leaving the code the way it is.

Not only does that change make the code less maintainable in the sense
that every message that might be generated by print_stats must be
pre-translated, but it also moves the format strings away from
the corresponding argument lists; and that makes it so the compiler
can no longer verify types and number of format directives vs. arguments.

Jim

_______________________________________________
Bug-coreutils mailing list
Bug-coreutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-coreutils

Reply via email to