git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH/RFC 07/17] gettext.c: work around us not using setlocale(LC_CTYPE, "")

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Aug 31, 2010, 16:51 UTC
Message-ID
<AANLkTi=+oGVx_T_-0T0RTqe+rV4QwQakjXUXKk8tddFL@mail.gmail.com>
In-Reply-To
<20100831151800.GG2315@burratino>
On Tue, Aug 31, 2010 at 15:18, Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 7 quoted lines
> Ævar Arnfjörð Bjarmason wrote:
>
>> In 107880a I removed our use of setlocale(LC_CTYPE, "") because of a
>> bug in the GNU C Library [1]
>
> Future readers might benefit from a reminder that it is vsnprintf that
> is broken.
I'll work something in about that.
> Aside, not about this patch: glibc printf can be very convenient for
> translators, because of format strings like "%4$s".  Do other common
> platforms like FreeBSD and Mingw have something similar?

I certainly hope so. I was planning on documenting its usage, Johannes?

Show 20 quoted lines
>> --- a/gettext.c
>> +++ b/gettext.c
>> @@ -17,5 +19,9 @@ extern void git_setup_gettext(void) {
>>       }
>>
>>       (void)setlocale(LC_MESSAGES, "");
>> +     (void)setlocale(LC_CTYPE, "");
>> +     charset = nl_langinfo(CODESET);
>> +     (void)bind_textdomain_codeset("git", charset);
>> +     (void)setlocale(LC_CTYPE, "C");
>
> For the curious: we cannot use
>
>        setlocale(LC_CTYPE, "");
>        charset = nl_langinfo(CODESET);
>        setlocale(LC_CTYPE, "C");
>        bind_textdomain_codeset("git", charset);
>
> because nl_langinfo returns a pointer to a static buffer that might
> be wiped out by setlocale() iirc.

But I'm hopefully sidestepping that issue by passing it to bind_textdomain_codeset() right away.

Previous: Jonathan NiederNext: Jonathan Nieder
Message 23 of 55 in “Begin gettextizing Git”
  1. 00/17 Begin gettextizing GitÆvar Arnfjörð Bjarmason, Aug 30, 2010
  2. 01/17 Makefile: A variable for options used by xgettext(1) callsÆvar Arnfjörð Bjarmason, Aug 30, 2010
  3. Jonathan NiederAug 31, 2010
  4. Ævar Arnfjörð BjarmasonAug 31, 2010
  5. 02/17 Makefile: provide a --msgid-bugs-address to xgettext(1)Ævar Arnfjörð Bjarmason, Aug 30, 2010
  6. 03/17 Makefile: tell xgettext(1) that our source is in UTF-8Ævar Arnfjörð Bjarmason, Aug 30, 2010
  7. 04/17 builtin.h: Include gettext.hÆvar Arnfjörð Bjarmason, Aug 30, 2010
  8. 05/17 gettext: make the simple parts of git-init localizableÆvar Arnfjörð Bjarmason, Aug 30, 2010
  9. Jonathan NiederAug 31, 2010
  10. Ævar Arnfjörð BjarmasonAug 31, 2010
  11. Jonathan NiederAug 31, 2010
  12. Ævar Arnfjörð BjarmasonAug 31, 2010
  13. Jonathan NiederAug 31, 2010
  14. Junio C HamanoAug 31, 2010
  15. 06/17 gettext: localize the main git-init messageÆvar Arnfjörð Bjarmason, Aug 30, 2010
  16. Jonathan NiederAug 31, 2010
  17. Ævar Arnfjörð BjarmasonAug 31, 2010
  18. Jonathan NiederAug 31, 2010
  19. 07/17 gettext.c: work around us not using setlocale(LC_CTYPE, "")Ævar Arnfjörð Bjarmason, Aug 30, 2010
  20. Jonathan NiederAug 31, 2010
  21. Marcin CieslakAug 31, 2010
  22. Jonathan NiederAug 31, 2010
  23. Ævar Arnfjörð BjarmasonAug 31, 2010
  24. Jonathan NiederAug 31, 2010
  25. Erik Faye-LundAug 31, 2010
  26. 08/17 gettext tests: test if $VERSION exists before using itÆvar Arnfjörð Bjarmason, Aug 30, 2010
  27. 09/17 gettext tests: update test/is.po to match t/t0200/test.cÆvar Arnfjörð Bjarmason, Aug 30, 2010
  28. 10/17 gettext tests: add detection for is_IS.ISO-8859-1 localeÆvar Arnfjörð Bjarmason, Aug 30, 2010
  29. 11/17 gettext tests: test message re-encoding under ShellÆvar Arnfjörð Bjarmason, Aug 30, 2010
  30. 12/17 gettext tests: test re-encoding with a UTF-8 msgid under ShellÆvar Arnfjörð Bjarmason, Aug 30, 2010
  31. 13/17 gettext tests: mark a test message as not needing translationÆvar Arnfjörð Bjarmason, Aug 30, 2010
  32. 14/17 po/is.po: msgmerge and add Language: headerÆvar Arnfjörð Bjarmason, Aug 30, 2010
  33. 15/17 po/is.po: add Icelandic translationÆvar Arnfjörð Bjarmason, Aug 30, 2010
  34. Jonathan NiederAug 31, 2010
  35. Ævar Arnfjörð BjarmasonAug 31, 2010
  36. Erik Faye-LundAug 31, 2010
  37. Ævar Arnfjörð BjarmasonAug 31, 2010
  38. Erik Faye-LundAug 31, 2010
  39. 16/17 po/pl.po: add Polish translationÆvar Arnfjörð Bjarmason, Aug 30, 2010
  40. 17/17 gettext tests: test message re-encoding under CÆvar Arnfjörð Bjarmason, Aug 30, 2010
  41. Junio C HamanoAug 30, 2010
  42. gettext: Make NO_GETTEXT=YesPlease the default in releasesÆvar Arnfjörð Bjarmason, Aug 31, 2010
  43. Ævar Arnfjörð BjarmasonAug 31, 2010
  44. Jonathan NiederAug 31, 2010
  45. Ævar Arnfjörð BjarmasonAug 31, 2010
  46. Jonathan NiederAug 31, 2010
  47. Ævar Arnfjörð BjarmasonAug 31, 2010
  48. Jonathan NiederAug 31, 2010
  49. Peter KreftingAug 31, 2010
  50. Ævar Arnfjörð BjarmasonAug 31, 2010
  51. Peter KreftingAug 31, 2010
  52. Matthieu MoyAug 31, 2010
  53. Ævar Arnfjörð BjarmasonAug 31, 2010
  54. Jonathan NiederAug 31, 2010
  55. Ævar Arnfjörð BjarmasonAug 31, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.