* [PATCH] gettext: use libcharset when available @ 2010-09-28 16:05 Erik Faye-Lund 2010-09-28 17:07 ` Ævar Arnfjörð Bjarmason 0 siblings, 1 reply; 12+ messages in thread From: Erik Faye-Lund @ 2010-09-28 16:05 UTC (permalink / raw) To: avarab; +Cc: git, Erik Faye-Lund libcharset provides an even more portable way of quering the charset of the current locale. Use that instead of nl_langinfo unless NO_LIBCHARSET is set. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> --- Windows doesn't have langinfo.h and nl_langinfo(), but libcharset was invented for this very purpose. With this patch on top, ab/i18n compiles without errors in msysGit. There's still a bunch of lower-level issues on Windows, like gettext ending up overloading our winansi-wrappings for printf and friends, but let's take thinks one step at the time :) configure.ac | 6 ++++++ gettext.c | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletions(-) diff --git a/configure.ac b/configure.ac index 1821d89..d3139cd 100644 --- a/configure.ac +++ b/configure.ac @@ -810,6 +810,12 @@ AC_CHECK_HEADER([libintl.h], [NO_GETTEXT=YesPlease]) AC_SUBST(NO_GETTEXT) # +# Define NO_LIBCHARSET if you don't have libcharset.h +AC_CHECK_HEADER([libcharset.h], +[NO_LIBCHARSET=], +[NO_LIBCHARSET=YesPlease]) +AC_SUBST(NO_LIBCHARSET) +# # Define NO_STRCASESTR if you don't have strcasestr. GIT_CHECK_FUNC(strcasestr, [NO_STRCASESTR=], diff --git a/gettext.c b/gettext.c index 8644098..902268c 100644 --- a/gettext.c +++ b/gettext.c @@ -1,13 +1,17 @@ #include "exec_cmd.h" #include <locale.h> #include <libintl.h> +#ifndef NO_LIBCHARSET +#include <libcharset.h> +#else #include <langinfo.h> +#endif #include <stdlib.h> extern void git_setup_gettext(void) { char *podir; char *envdir = getenv("GIT_TEXTDOMAINDIR"); - char *charset; + const char *charset; if (envdir) { (void)bindtextdomain("git", envdir); @@ -20,7 +24,11 @@ extern void git_setup_gettext(void) { (void)setlocale(LC_MESSAGES, ""); (void)setlocale(LC_CTYPE, ""); +#ifndef NO_LIBCHARSET + charset = locale_charset(); +#else charset = nl_langinfo(CODESET); +#endif (void)bind_textdomain_codeset("git", charset); (void)setlocale(LC_CTYPE, "C"); (void)textdomain("git"); -- 1.7.3.165.gdfe39.dirty ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] gettext: use libcharset when available 2010-09-28 16:05 [PATCH] gettext: use libcharset when available Erik Faye-Lund @ 2010-09-28 17:07 ` Ævar Arnfjörð Bjarmason 2010-09-28 17:42 ` Erik Faye-Lund 0 siblings, 1 reply; 12+ messages in thread From: Ævar Arnfjörð Bjarmason @ 2010-09-28 17:07 UTC (permalink / raw) To: Erik Faye-Lund; +Cc: git On Tue, Sep 28, 2010 at 16:05, Erik Faye-Lund <kusmabite@gmail.com> wrote: > libcharset provides an even more portable way of quering the charset > of the current locale. > > Use that instead of nl_langinfo unless NO_LIBCHARSET is set. > > Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> > --- > > Windows doesn't have langinfo.h and nl_langinfo(), but libcharset was > invented for this very purpose. With this patch on top, ab/i18n > compiles without errors in msysGit. > > There's still a bunch of lower-level issues on Windows, like gettext > ending up overloading our winansi-wrappings for printf and friends, > but let's take thinks one step at the time :) > > configure.ac | 6 ++++++ > gettext.c | 10 +++++++++- > 2 files changed, 15 insertions(+), 1 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 1821d89..d3139cd 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -810,6 +810,12 @@ AC_CHECK_HEADER([libintl.h], > [NO_GETTEXT=YesPlease]) > AC_SUBST(NO_GETTEXT) > # > +# Define NO_LIBCHARSET if you don't have libcharset.h > +AC_CHECK_HEADER([libcharset.h], > +[NO_LIBCHARSET=], > +[NO_LIBCHARSET=YesPlease]) > +AC_SUBST(NO_LIBCHARSET) > +# > # Define NO_STRCASESTR if you don't have strcasestr. > GIT_CHECK_FUNC(strcasestr, > [NO_STRCASESTR=], > diff --git a/gettext.c b/gettext.c > index 8644098..902268c 100644 > --- a/gettext.c > +++ b/gettext.c > @@ -1,13 +1,17 @@ > #include "exec_cmd.h" > #include <locale.h> > #include <libintl.h> > +#ifndef NO_LIBCHARSET > +#include <libcharset.h> > +#else > #include <langinfo.h> > +#endif > #include <stdlib.h> > > extern void git_setup_gettext(void) { > char *podir; > char *envdir = getenv("GIT_TEXTDOMAINDIR"); > - char *charset; > + const char *charset; > > if (envdir) { > (void)bindtextdomain("git", envdir); > @@ -20,7 +24,11 @@ extern void git_setup_gettext(void) { > > (void)setlocale(LC_MESSAGES, ""); > (void)setlocale(LC_CTYPE, ""); > +#ifndef NO_LIBCHARSET > + charset = locale_charset(); > +#else > charset = nl_langinfo(CODESET); > +#endif > (void)bind_textdomain_codeset("git", charset); > (void)setlocale(LC_CTYPE, "C"); > (void)textdomain("git"); Thanks for porting it to Windows. Some points: * Nit: Should be NEEDS_LIBCHARSET instead of NO_LIBCHARSET, all the variables that set library inclusions in the Makefile use the NEED_* names. * GHC had a patch like this, it seems it affects NetBSD and OpenBSD too, can anyone with these systems confirm: http://hackage.haskell.org/trac/ghc/ticket/4080 * Their patch compiles a program that includes libcharset.h and compiles "const char* charset = locale_charset();". I don't know if this is needed, or whether just checking the header name like you've done will do. * They also have a HAVE_LANGINFO_H define and fall back on just returning "", which works on GNU iconv. Maybe we should do this too? I'm not sure about any of this, since I've just been testing on Solaris, Linux and FreeBSD. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] gettext: use libcharset when available 2010-09-28 17:07 ` Ævar Arnfjörð Bjarmason @ 2010-09-28 17:42 ` Erik Faye-Lund 2010-09-28 18:29 ` [PATCH/RFC 0/2] use libcharset.h with gettext if available Ævar Arnfjörð Bjarmason 2010-09-28 18:29 ` [PATCH/RFC 1/2] gettext: use const char* instead of char* Ævar Arnfjörð Bjarmason 0 siblings, 2 replies; 12+ messages in thread From: Erik Faye-Lund @ 2010-09-28 17:42 UTC (permalink / raw) To: Ævar Arnfjörð Bjarmason; +Cc: git On Tue, Sep 28, 2010 at 7:07 PM, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote: > On Tue, Sep 28, 2010 at 16:05, Erik Faye-Lund <kusmabite@gmail.com> wrote: >> libcharset provides an even more portable way of quering the charset >> of the current locale. >> >> Use that instead of nl_langinfo unless NO_LIBCHARSET is set. >> >> Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> >> --- >> >> Windows doesn't have langinfo.h and nl_langinfo(), but libcharset was >> invented for this very purpose. With this patch on top, ab/i18n >> compiles without errors in msysGit. >> >> There's still a bunch of lower-level issues on Windows, like gettext >> ending up overloading our winansi-wrappings for printf and friends, >> but let's take thinks one step at the time :) >> >> configure.ac | 6 ++++++ >> gettext.c | 10 +++++++++- >> 2 files changed, 15 insertions(+), 1 deletions(-) >> >> diff --git a/configure.ac b/configure.ac >> index 1821d89..d3139cd 100644 >> --- a/configure.ac >> +++ b/configure.ac >> @@ -810,6 +810,12 @@ AC_CHECK_HEADER([libintl.h], >> [NO_GETTEXT=YesPlease]) >> AC_SUBST(NO_GETTEXT) >> # >> +# Define NO_LIBCHARSET if you don't have libcharset.h >> +AC_CHECK_HEADER([libcharset.h], >> +[NO_LIBCHARSET=], >> +[NO_LIBCHARSET=YesPlease]) >> +AC_SUBST(NO_LIBCHARSET) >> +# >> # Define NO_STRCASESTR if you don't have strcasestr. >> GIT_CHECK_FUNC(strcasestr, >> [NO_STRCASESTR=], >> diff --git a/gettext.c b/gettext.c >> index 8644098..902268c 100644 >> --- a/gettext.c >> +++ b/gettext.c >> @@ -1,13 +1,17 @@ >> #include "exec_cmd.h" >> #include <locale.h> >> #include <libintl.h> >> +#ifndef NO_LIBCHARSET >> +#include <libcharset.h> >> +#else >> #include <langinfo.h> >> +#endif >> #include <stdlib.h> >> >> extern void git_setup_gettext(void) { >> char *podir; >> char *envdir = getenv("GIT_TEXTDOMAINDIR"); >> - char *charset; >> + const char *charset; >> >> if (envdir) { >> (void)bindtextdomain("git", envdir); >> @@ -20,7 +24,11 @@ extern void git_setup_gettext(void) { >> >> (void)setlocale(LC_MESSAGES, ""); >> (void)setlocale(LC_CTYPE, ""); >> +#ifndef NO_LIBCHARSET >> + charset = locale_charset(); >> +#else >> charset = nl_langinfo(CODESET); >> +#endif >> (void)bind_textdomain_codeset("git", charset); >> (void)setlocale(LC_CTYPE, "C"); >> (void)textdomain("git"); > > Thanks for porting it to Windows. Some points: > > * Nit: Should be NEEDS_LIBCHARSET instead of NO_LIBCHARSET, all the > variables that set library inclusions in the Makefile use the > NEED_* names. > That's not true, at least NO_OPENSSL, NO_PTHREADS, NO_ICONV, NO_LIBGEN_H, NO_MMAP and NO_SYS_SELECT_H use the NO_-prefix to include libraries (as opposed to the NEEDS_-prefix). And to be honest, I think the NEEDS_-prefix would be a lie in this case; we don't NEED it, we take advantage of it if it's there. To be honest, I just mimicked what was done for detection of gettext. Perhaps HAVE_LIBCHARSET_H would be the appropriate define? It's what we use for paths.h (HAVE_PATHS_H)... > * Their patch compiles a program that includes libcharset.h and > compiles "const char* charset = locale_charset();". I don't know if > this is needed, or whether just checking the header name like > you've done will do. > I don't think there's any point to it - libcharset.h is pretty much just about that one function. And if it turns out I'm wrong, we can add a check like that in the future. > * They also have a HAVE_LANGINFO_H define and fall back on just > returning "", which works on GNU iconv. Maybe we should do this > too? > Perhaps, but can't that wait until we encounter a system that needs it? What's interesting there is what you say about GNU iconv handling "". This means that the minimal fix for Windows could be even smaller - we're using GNU iconv :) > I'm not sure about any of this, since I've just been testing on > Solaris, Linux and FreeBSD. I think Solaris, Linux, FreeBSD and Windows is a pretty wide selection of platforms, so I hope it should be pretty painless once this hits 'next'. Sure, there might be some platforms that needs a fix-up, but there always is with new code. And besides, there's even time to test more platforms before merging to 'next', no? :) ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH/RFC 0/2] use libcharset.h with gettext if available 2010-09-28 17:42 ` Erik Faye-Lund @ 2010-09-28 18:29 ` Ævar Arnfjörð Bjarmason 2010-09-28 21:47 ` Erik Faye-Lund 2010-09-28 18:29 ` [PATCH/RFC 1/2] gettext: use const char* instead of char* Ævar Arnfjörð Bjarmason 1 sibling, 1 reply; 12+ messages in thread From: Ævar Arnfjörð Bjarmason @ 2010-09-28 18:29 UTC (permalink / raw) To: git; +Cc: Erik Faye-Lund, Ævar Arnfjörð Bjarmason On Tue, Sep 28, 2010 at 17:42, Erik Faye-Lund <kusmabite@gmail.com> wrote: > On Tue, Sep 28, 2010 at 7:07 PM, Ævar Arnfjörð Bjarmason > <avarab@gmail.com> wrote: >> On Tue, Sep 28, 2010 at 16:05, Erik Faye-Lund <kusmabite@gmail.com> wrote: >>> libcharset provides an even more portable way of quering the charset >>> of the current locale. >>> >>> Use that instead of nl_langinfo unless NO_LIBCHARSET is set. >>> >>> Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> >>> --- >>> >>> Windows doesn't have langinfo.h and nl_langinfo(), but libcharset was >>> invented for this very purpose. With this patch on top, ab/i18n >>> compiles without errors in msysGit. >>> >>> There's still a bunch of lower-level issues on Windows, like gettext >>> ending up overloading our winansi-wrappings for printf and friends, >>> but let's take thinks one step at the time :) >>> >>> configure.ac | 6 ++++++ >>> gettext.c | 10 +++++++++- >>> 2 files changed, 15 insertions(+), 1 deletions(-) >>> >>> diff --git a/configure.ac b/configure.ac >>> index 1821d89..d3139cd 100644 >>> --- a/configure.ac >>> +++ b/configure.ac >>> @@ -810,6 +810,12 @@ AC_CHECK_HEADER([libintl.h], >>> [NO_GETTEXT=YesPlease]) >>> AC_SUBST(NO_GETTEXT) >>> # >>> +# Define NO_LIBCHARSET if you don't have libcharset.h >>> +AC_CHECK_HEADER([libcharset.h], >>> +[NO_LIBCHARSET=], >>> +[NO_LIBCHARSET=YesPlease]) >>> +AC_SUBST(NO_LIBCHARSET) >>> +# >>> # Define NO_STRCASESTR if you don't have strcasestr. >>> GIT_CHECK_FUNC(strcasestr, >>> [NO_STRCASESTR=], >>> diff --git a/gettext.c b/gettext.c >>> index 8644098..902268c 100644 >>> --- a/gettext.c >>> +++ b/gettext.c >>> @@ -1,13 +1,17 @@ >>> #include "exec_cmd.h" >>> #include <locale.h> >>> #include <libintl.h> >>> +#ifndef NO_LIBCHARSET >>> +#include <libcharset.h> >>> +#else >>> #include <langinfo.h> >>> +#endif >>> #include <stdlib.h> >>> >>> extern void git_setup_gettext(void) { >>> char *podir; >>> char *envdir = getenv("GIT_TEXTDOMAINDIR"); >>> - char *charset; >>> + const char *charset; >>> >>> if (envdir) { >>> (void)bindtextdomain("git", envdir); >>> @@ -20,7 +24,11 @@ extern void git_setup_gettext(void) { >>> >>> (void)setlocale(LC_MESSAGES, ""); >>> (void)setlocale(LC_CTYPE, ""); >>> +#ifndef NO_LIBCHARSET >>> + charset = locale_charset(); >>> +#else >>> charset = nl_langinfo(CODESET); >>> +#endif >>> (void)bind_textdomain_codeset("git", charset); >>> (void)setlocale(LC_CTYPE, "C"); >>> (void)textdomain("git"); >> >> Thanks for porting it to Windows. Some points: >> >> * Nit: Should be NEEDS_LIBCHARSET instead of NO_LIBCHARSET, all the >> variables that set library inclusions in the Makefile use the >> NEED_* names. >> > > That's not true, at least NO_OPENSSL, NO_PTHREADS, NO_ICONV, > NO_LIBGEN_H, NO_MMAP and NO_SYS_SELECT_H use the NO_-prefix to include > libraries (as opposed to the NEEDS_-prefix). And to be honest, I think > the NEEDS_-prefix would be a lie in this case; we don't NEED it, we > take advantage of it if it's there. > > To be honest, I just mimicked what was done for detection of gettext. > Perhaps HAVE_LIBCHARSET_H would be the appropriate define? It's what > we use for paths.h (HAVE_PATHS_H)... You're right, a NO_* makes more sense here. >> * Their patch compiles a program that includes libcharset.h and >> compiles "const char* charset = locale_charset();". I don't know if >> this is needed, or whether just checking the header name like >> you've done will do. >> > > I don't think there's any point to it - libcharset.h is pretty much > just about that one function. And if it turns out I'm wrong, we can > add a check like that in the future. > >> * They also have a HAVE_LANGINFO_H define and fall back on just >> returning "", which works on GNU iconv. Maybe we should do this >> too? >> > > Perhaps, but can't that wait until we encounter a system that needs it? To both of the above: It's completely reasonable as-is, I just wanted to mention it in case a list member knew of a reason to do it like GHC did it. But just checking for the header will do fine until we encounter issues with that. > What's interesting there is what you say about GNU iconv handling "". > This means that the minimal fix for Windows could be even smaller - > we're using GNU iconv :) Yeah, but probably better to do it by using libcharset.h instead. >> I'm not sure about any of this, since I've just been testing on >> Solaris, Linux and FreeBSD. > > I think Solaris, Linux, FreeBSD and Windows is a pretty wide selection > of platforms, so I hope it should be pretty painless once this hits > 'next'. Sure, there might be some platforms that needs a fix-up, but > there always is with new code. And besides, there's even time to test > more platforms before merging to 'next', no? :) Yeah, I'm hoping it'll get into next soon so we can get more reports/fixes like these. Anyway, I amended your patches a bit, here are the changes: * Split up the s/char*/const char*/ change into its own patch, or is there a reason for why this needs to be there along with the libcharset.h change? * Added docs about the define to the Makefile * Added defaults for NO_LIBCHARSET to the default, I only changed the defaults for the MINGW entry, maybe it should be changed on Cygwin and Windows too? And probably on OpenBSD and NetBSD too. Erik Faye-Lund (2): gettext: use const char* instead of char* gettext: use libcharset when available Makefile | 17 +++++++++++++++++ configure.ac | 6 ++++++ gettext.c | 10 +++++++++- 3 files changed, 32 insertions(+), 1 deletions(-) -- 1.7.3.159.g610493 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH/RFC 0/2] use libcharset.h with gettext if available 2010-09-28 18:29 ` [PATCH/RFC 0/2] use libcharset.h with gettext if available Ævar Arnfjörð Bjarmason @ 2010-09-28 21:47 ` Erik Faye-Lund 2010-09-29 10:00 ` Ævar Arnfjörð Bjarmason 0 siblings, 1 reply; 12+ messages in thread From: Erik Faye-Lund @ 2010-09-28 21:47 UTC (permalink / raw) To: Ævar Arnfjörð Bjarmason; +Cc: git On Tue, Sep 28, 2010 at 8:29 PM, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote: > Yeah, I'm hoping it'll get into next soon so we can get more > reports/fixes like these. Anyway, I amended your patches a bit, here > are the changes: > > * Split up the s/char*/const char*/ change into its own patch, or is > there a reason for why this needs to be there along with the > libcharset.h change? > The reason was that my version of locale_charset() returns a const char *, so I got a warning if I didn't. nl_langinfo() returns a char *, so I don't think that constness-fix patch makes sense in itself. But what might make more sense would be to squash it into the original commit for that line. > * Added docs about the define to the Makefile > Nice! > * Added defaults for NO_LIBCHARSET to the default, I only changed the > defaults for the MINGW entry, maybe it should be changed on Cygwin > and Windows too? And probably on OpenBSD and NetBSD too. > I don't think NO_LIBCHARSET should be the default. libcharset is reported to be a bit better than nl_langinfo at normalizing the encoding, and GNU gettext depends on libcharset (through libiconv, which libcharset is distributed with). So in the case of a GNU gettext, libcharset should really be present. > Erik Faye-Lund (2): > gettext: use const char* instead of char* > gettext: use libcharset when available > > Makefile | 17 +++++++++++++++++ > configure.ac | 6 ++++++ > gettext.c | 10 +++++++++- > 3 files changed, 32 insertions(+), 1 deletions(-) > > -- > 1.7.3.159.g610493 > > -- > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH/RFC 0/2] use libcharset.h with gettext if available 2010-09-28 21:47 ` Erik Faye-Lund @ 2010-09-29 10:00 ` Ævar Arnfjörð Bjarmason 2010-09-29 11:41 ` Erik Faye-Lund 0 siblings, 1 reply; 12+ messages in thread From: Ævar Arnfjörð Bjarmason @ 2010-09-29 10:00 UTC (permalink / raw) To: Erik Faye-Lund; +Cc: git On Tue, Sep 28, 2010 at 21:47, Erik Faye-Lund <kusmabite@gmail.com> wrote: > On Tue, Sep 28, 2010 at 8:29 PM, Ævar Arnfjörð Bjarmason > <avarab@gmail.com> wrote: >> Yeah, I'm hoping it'll get into next soon so we can get more >> reports/fixes like these. Anyway, I amended your patches a bit, here >> are the changes: >> >> * Split up the s/char*/const char*/ change into its own patch, or is >> there a reason for why this needs to be there along with the >> libcharset.h change? >> > > The reason was that my version of locale_charset() returns a const > char *, so I got a warning if I didn't. nl_langinfo() returns a char > *, so I don't think that constness-fix patch makes sense in itself. > But what might make more sense would be to squash it into the original > commit for that line. Ah, then it should be part of the patch. I'll add a note about the different prototypes to it. >> * Added docs about the define to the Makefile >> > > Nice! > >> * Added defaults for NO_LIBCHARSET to the default, I only changed the >> defaults for the MINGW entry, maybe it should be changed on Cygwin >> and Windows too? And probably on OpenBSD and NetBSD too. >> > > I don't think NO_LIBCHARSET should be the default. libcharset is > reported to be a bit better than nl_langinfo at normalizing the > encoding, and GNU gettext depends on libcharset (through libiconv, > which libcharset is distributed with). So in the case of a GNU > gettext, libcharset should really be present. I can't find any package (with apt-file) on Debian or Ubuntu that provides libcharset.h, but I have langinfo.h on those systems. The GNU gettext manual also reccomends the use of nl_langinfo in "11.2.4 How to specify the output character set `gettext' uses", so it seems that using that and not libiconv is the default way of doing things on GNU gettext + GNU libc systems. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH/RFC 0/2] use libcharset.h with gettext if available 2010-09-29 10:00 ` Ævar Arnfjörð Bjarmason @ 2010-09-29 11:41 ` Erik Faye-Lund 2010-09-29 13:07 ` [PATCH] gettext: use libcharset when available Ævar Arnfjörð Bjarmason 0 siblings, 1 reply; 12+ messages in thread From: Erik Faye-Lund @ 2010-09-29 11:41 UTC (permalink / raw) To: Ævar Arnfjörð Bjarmason; +Cc: git On Wed, Sep 29, 2010 at 12:00 PM, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote: > On Tue, Sep 28, 2010 at 21:47, Erik Faye-Lund <kusmabite@gmail.com> wrote: >> On Tue, Sep 28, 2010 at 8:29 PM, Ævar Arnfjörð Bjarmason >>> * Added defaults for NO_LIBCHARSET to the default, I only changed the >>> defaults for the MINGW entry, maybe it should be changed on Cygwin >>> and Windows too? And probably on OpenBSD and NetBSD too. >>> >> >> I don't think NO_LIBCHARSET should be the default. libcharset is >> reported to be a bit better than nl_langinfo at normalizing the >> encoding, and GNU gettext depends on libcharset (through libiconv, >> which libcharset is distributed with). So in the case of a GNU >> gettext, libcharset should really be present. > > I can't find any package (with apt-file) on Debian or Ubuntu that > provides libcharset.h, but I have langinfo.h on those systems. > Strange. A 'make install' on libiconv installed libcharset.h to $prefix/include on my system. But looking a bit deeper, it seems that glibc supplies it's own iconv implementation (perhaps based on libiconv, I don't know). So yes, I tend to agree with you. GNU platforms should not be expected to have libcharset. > The GNU gettext manual also reccomends the use of nl_langinfo in > "11.2.4 How to specify the output character set `gettext' uses", so it > seems that using that and not libiconv is the default way of doing > things on GNU gettext + GNU libc systems. > OK, fair enough. I based my comment on some comment by the GNU gettext maintainer (who is also the libcharset maintainer - libcharset does in fact use nl_langinfo if present), but since this is in the manual I fully withdraw my comment. Then again, if this is an opt-in rather than an opt-out, perhaps we should change the switch to HAVE_LIBCHARSET? I don't mean to go in circles here, but it sounds more self-documenting to me. ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH] gettext: use libcharset when available 2010-09-29 11:41 ` Erik Faye-Lund @ 2010-09-29 13:07 ` Ævar Arnfjörð Bjarmason 2010-09-29 13:34 ` Erik Faye-Lund 0 siblings, 1 reply; 12+ messages in thread From: Ævar Arnfjörð Bjarmason @ 2010-09-29 13:07 UTC (permalink / raw) To: git; +Cc: Erik Faye-Lund, Junio C Hamano, Ævar Arnfjörð Bjarmason From: Erik Faye-Lund <kusmabite@gmail.com> Change the git_setup_gettext function to use libcharset to query the character set of the current locale if it's available. I.e. use it instead of nl_langinfo if HAVE_LIBCHARSET_H is set. The GNU gettext manual recommends using langinfo.h's nl_langinfo(CODESET) to acquire the current character set, but on systems that have libcharset.h's locale_charset() using the latter is either saner, or the only option on those systems. GNU and Solaris have a nl_langinfo(CODESET), FreeBSD can use either, but MingW and some others need to use libcharset.h's locale_charset() instead. Since locale_charset returns a const char* instead of char* as nl_langinfo does the type of the variable we're using to store the charset in git_setup_gettext has been changed. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- Junio, this goes on top of ab/i18n. On Wed, Sep 29, 2010 at 11:41, Erik Faye-Lund <kusmabite@gmail.com> wrote: > On Wed, Sep 29, 2010 at 12:00 PM, Ævar Arnfjörð Bjarmason > <avarab@gmail.com> wrote: >> On Tue, Sep 28, 2010 at 21:47, Erik Faye-Lund <kusmabite@gmail.com> wrote: >>> On Tue, Sep 28, 2010 at 8:29 PM, Ævar Arnfjörð Bjarmason >>>> * Added defaults for NO_LIBCHARSET to the default, I only changed the >>>> defaults for the MINGW entry, maybe it should be changed on Cygwin >>>> and Windows too? And probably on OpenBSD and NetBSD too. >>>> >>> >>> I don't think NO_LIBCHARSET should be the default. libcharset is >>> reported to be a bit better than nl_langinfo at normalizing the >>> encoding, and GNU gettext depends on libcharset (through libiconv, >>> which libcharset is distributed with). So in the case of a GNU >>> gettext, libcharset should really be present. >> >> I can't find any package (with apt-file) on Debian or Ubuntu that >> provides libcharset.h, but I have langinfo.h on those systems. >> > > Strange. A 'make install' on libiconv installed libcharset.h to > $prefix/include on my system. But looking a bit deeper, it seems that > glibc supplies it's own iconv implementation (perhaps based on > libiconv, I don't know). So yes, I tend to agree with you. GNU > platforms should not be expected to have libcharset. I asked around and none of Debian/Ubuntu/Fedora and other Linux systems have libcharset.h, and using the gettext branch without libcharset.h on FreeBSD works fine. >> The GNU gettext manual also reccomends the use of nl_langinfo in >> "11.2.4 How to specify the output character set `gettext' uses", so it >> seems that using that and not libiconv is the default way of doing >> things on GNU gettext + GNU libc systems. >> > > OK, fair enough. I based my comment on some comment by the GNU gettext > maintainer (who is also the libcharset maintainer - libcharset does in > fact use nl_langinfo if present), but since this is in the manual I > fully withdraw my comment. > > Then again, if this is an opt-in rather than an opt-out, perhaps we > should change the switch to HAVE_LIBCHARSET? I don't mean to go in > circles here, but it sounds more self-documenting to me. Agreed, changed in this version. I also added a bit to config.mak.in to make the configure.ac change actually do something, and changed the docs & commit message. Makefile | 17 +++++++++++++++++ config.mak.in | 1 + configure.ac | 6 ++++++ gettext.c | 10 +++++++++- 4 files changed, 33 insertions(+), 1 deletions(-) diff --git a/Makefile b/Makefile index 680e578..a05396b 100644 --- a/Makefile +++ b/Makefile @@ -43,6 +43,12 @@ all:: # on platforms where we don't expect glibc (Linux, Hurd, # GNU/kFreeBSD), which includes libintl. # +# Define HAVE_LIBCHARSET_H if you haven't set NO_GETTEXT and you can't +# trust the langinfo.h's nl_langinfo(CODESET) function to return the +# current character set. GNU and Solaris have a nl_langinfo(CODESET), +# FreeBSD can use either, but MingW and some others need to use +# libcharset.h's locale_charset() instead. +# # Define GNU_GETTEXT if you're using the GNU implementation of # libintl. We define this everywhere except on Solaris, which has its # own gettext implementation. If GNU_GETTEXT is set we'll use GNU @@ -792,6 +798,10 @@ ifndef NO_GETTEXT # Systems that don't use GNU gettext are the exception. Only # Solaris has a mature non-GNU gettext implementation. GNU_GETTEXT = YesPlease + + # Since we assume a GNU gettext by default we also assume a + # GNU-like langinfo.h by default + HAVE_LIBCHARSET_H = endif # We choose to avoid "if .. else if .. else .. endif endif" @@ -1180,6 +1190,9 @@ ifneq (,$(wildcard ../THIS_IS_MSYSGIT)) EXTLIBS += /mingw/lib/libz.a NO_R_TO_GCC_LINKER = YesPlease INTERNAL_QSORT = YesPlease +ifndef NO_GETTEXT + HAVE_LIBCHARSET_H = YesPlease +endif else NO_CURL = YesPlease endif @@ -1964,6 +1977,10 @@ config.s config.o: EXTRA_CPPFLAGS = -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"' http.s http.o: EXTRA_CPPFLAGS = -DGIT_HTTP_USER_AGENT='"git/$(GIT_VERSION)"' +ifdef HAVE_LIBCHARSET_H +gettext.s gettext.o: EXTRA_CPPFLAGS = -DHAVE_LIBCHARSET_H +endif + ifdef NO_EXPAT http-walker.s http-walker.o: EXTRA_CPPFLAGS = -DNO_EXPAT endif diff --git a/config.mak.in b/config.mak.in index 9f47aa5..969cbaa 100644 --- a/config.mak.in +++ b/config.mak.in @@ -34,6 +34,7 @@ NO_CURL=@NO_CURL@ NO_EXPAT=@NO_EXPAT@ NO_LIBGEN_H=@NO_LIBGEN_H@ HAVE_PATHS_H=@HAVE_PATHS_H@ +HAVE_LIBCHARSET_H=@HAVE_LIBCHARSET_H@ NO_GETTEXT=@NO_GETTEXT@ NEEDS_LIBICONV=@NEEDS_LIBICONV@ NEEDS_SOCKET=@NEEDS_SOCKET@ diff --git a/configure.ac b/configure.ac index 1821d89..b06bad1 100644 --- a/configure.ac +++ b/configure.ac @@ -810,6 +810,12 @@ AC_CHECK_HEADER([libintl.h], [NO_GETTEXT=YesPlease]) AC_SUBST(NO_GETTEXT) # +# Define HAVE_LIBCHARSET_H if have libcharset.h +AC_CHECK_HEADER([libcharset.h], +[HAVE_LIBCHARSET_H=YesPlease], +[HAVE_LIBCHARSET_H=]) +AC_SUBST(HAVE_LIBCHARSET_H) +# # Define NO_STRCASESTR if you don't have strcasestr. GIT_CHECK_FUNC(strcasestr, [NO_STRCASESTR=], diff --git a/gettext.c b/gettext.c index 8644098..9bdac56 100644 --- a/gettext.c +++ b/gettext.c @@ -1,13 +1,17 @@ #include "exec_cmd.h" #include <locale.h> #include <libintl.h> +#ifdef HAVE_LIBCHARSET_H +#include <libcharset.h> +#else #include <langinfo.h> +#endif #include <stdlib.h> extern void git_setup_gettext(void) { char *podir; char *envdir = getenv("GIT_TEXTDOMAINDIR"); - char *charset; + const char *charset; if (envdir) { (void)bindtextdomain("git", envdir); @@ -20,7 +24,11 @@ extern void git_setup_gettext(void) { (void)setlocale(LC_MESSAGES, ""); (void)setlocale(LC_CTYPE, ""); +#ifdef HAVE_LIBCHARSET_H + charset = locale_charset(); +#else charset = nl_langinfo(CODESET); +#endif (void)bind_textdomain_codeset("git", charset); (void)setlocale(LC_CTYPE, "C"); (void)textdomain("git"); -- 1.7.3.159.g610493 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] gettext: use libcharset when available 2010-09-29 13:07 ` [PATCH] gettext: use libcharset when available Ævar Arnfjörð Bjarmason @ 2010-09-29 13:34 ` Erik Faye-Lund 2010-09-29 13:40 ` [PATCH v2] " Ævar Arnfjörð Bjarmason 0 siblings, 1 reply; 12+ messages in thread From: Erik Faye-Lund @ 2010-09-29 13:34 UTC (permalink / raw) To: Ævar Arnfjörð Bjarmason; +Cc: git, Junio C Hamano On Wed, Sep 29, 2010 at 3:07 PM, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote: > From: Erik Faye-Lund <kusmabite@gmail.com> > > Change the git_setup_gettext function to use libcharset to query the > character set of the current locale if it's available. I.e. use it > instead of nl_langinfo if HAVE_LIBCHARSET_H is set. > > The GNU gettext manual recommends using langinfo.h's > nl_langinfo(CODESET) to acquire the current character set, but on > systems that have libcharset.h's locale_charset() using the latter is > either saner, or the only option on those systems. > > GNU and Solaris have a nl_langinfo(CODESET), FreeBSD can use either, > but MingW and some others need to use libcharset.h's locale_charset() > instead. Very minor nit: It's officially spelled MinGW, with an upper-case G. > > Since locale_charset returns a const char* instead of char* as > nl_langinfo does the type of the variable we're using to store the > charset in git_setup_gettext has been changed. > > Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> > Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> > --- > > Junio, this goes on top of ab/i18n. > Wow, thanks for taking care of this! ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2] gettext: use libcharset when available 2010-09-29 13:34 ` Erik Faye-Lund @ 2010-09-29 13:40 ` Ævar Arnfjörð Bjarmason 2010-09-29 13:43 ` [PATCH v3] " Ævar Arnfjörð Bjarmason 0 siblings, 1 reply; 12+ messages in thread From: Ævar Arnfjörð Bjarmason @ 2010-09-29 13:40 UTC (permalink / raw) To: git; +Cc: Erik Faye-Lund, Junio C Hamano, Ævar Arnfjörð Bjarmason From: Erik Faye-Lund <kusmabite@gmail.com> Change the git_setup_gettext function to use libcharset to query the character set of the current locale if it's available. I.e. use it instead of nl_langinfo if HAVE_LIBCHARSET_H is set. The GNU gettext manual recommends using langinfo.h's nl_langinfo(CODESET) to acquire the current character set, but on systems that have libcharset.h's locale_charset() using the latter is either saner, or the only option on those systems. GNU and Solaris have a nl_langinfo(CODESET), FreeBSD can use either, but MinGW and some others need to use libcharset.h's locale_charset() instead. Since locale_charset returns a const char* instead of char* as nl_langinfo does the type of the variable we're using to store the charset in git_setup_gettext has been changed. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- On Wed, Sep 29, 2010 at 13:34, Erik Faye-Lund <kusmabite@gmail.com> wrote: > Very minor nit: It's officially spelled MinGW, with an upper-case G. Did s/MingW/MinGW/ in the content & message in this v2. Makefile | 19 ++++++++++++++++++- config.mak.in | 1 + configure.ac | 6 ++++++ gettext.c | 10 +++++++++- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 680e578..00cff39 100644 --- a/Makefile +++ b/Makefile @@ -43,6 +43,12 @@ all:: # on platforms where we don't expect glibc (Linux, Hurd, # GNU/kFreeBSD), which includes libintl. # +# Define HAVE_LIBCHARSET_H if you haven't set NO_GETTEXT and you can't +# trust the langinfo.h's nl_langinfo(CODESET) function to return the +# current character set. GNU and Solaris have a nl_langinfo(CODESET), +# FreeBSD can use either, but MinGW and some others need to use +# libcharset.h's locale_charset() instead. +# # Define GNU_GETTEXT if you're using the GNU implementation of # libintl. We define this everywhere except on Solaris, which has its # own gettext implementation. If GNU_GETTEXT is set we'll use GNU @@ -268,7 +274,7 @@ uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not') uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not') ifdef MSVC - # avoid the MingW and Cygwin configuration sections + # avoid the MinGW and Cygwin configuration sections uname_S := Windows uname_O := Windows endif @@ -792,6 +798,10 @@ ifndef NO_GETTEXT # Systems that don't use GNU gettext are the exception. Only # Solaris has a mature non-GNU gettext implementation. GNU_GETTEXT = YesPlease + + # Since we assume a GNU gettext by default we also assume a + # GNU-like langinfo.h by default + HAVE_LIBCHARSET_H = endif # We choose to avoid "if .. else if .. else .. endif endif" @@ -1180,6 +1190,9 @@ ifneq (,$(wildcard ../THIS_IS_MSYSGIT)) EXTLIBS += /mingw/lib/libz.a NO_R_TO_GCC_LINKER = YesPlease INTERNAL_QSORT = YesPlease +ifndef NO_GETTEXT + HAVE_LIBCHARSET_H = YesPlease +endif else NO_CURL = YesPlease endif @@ -1964,6 +1977,10 @@ config.s config.o: EXTRA_CPPFLAGS = -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"' http.s http.o: EXTRA_CPPFLAGS = -DGIT_HTTP_USER_AGENT='"git/$(GIT_VERSION)"' +ifdef HAVE_LIBCHARSET_H +gettext.s gettext.o: EXTRA_CPPFLAGS = -DHAVE_LIBCHARSET_H +endif + ifdef NO_EXPAT http-walker.s http-walker.o: EXTRA_CPPFLAGS = -DNO_EXPAT endif diff --git a/config.mak.in b/config.mak.in index 9f47aa5..969cbaa 100644 --- a/config.mak.in +++ b/config.mak.in @@ -34,6 +34,7 @@ NO_CURL=@NO_CURL@ NO_EXPAT=@NO_EXPAT@ NO_LIBGEN_H=@NO_LIBGEN_H@ HAVE_PATHS_H=@HAVE_PATHS_H@ +HAVE_LIBCHARSET_H=@HAVE_LIBCHARSET_H@ NO_GETTEXT=@NO_GETTEXT@ NEEDS_LIBICONV=@NEEDS_LIBICONV@ NEEDS_SOCKET=@NEEDS_SOCKET@ diff --git a/configure.ac b/configure.ac index 1821d89..b06bad1 100644 --- a/configure.ac +++ b/configure.ac @@ -810,6 +810,12 @@ AC_CHECK_HEADER([libintl.h], [NO_GETTEXT=YesPlease]) AC_SUBST(NO_GETTEXT) # +# Define HAVE_LIBCHARSET_H if have libcharset.h +AC_CHECK_HEADER([libcharset.h], +[HAVE_LIBCHARSET_H=YesPlease], +[HAVE_LIBCHARSET_H=]) +AC_SUBST(HAVE_LIBCHARSET_H) +# # Define NO_STRCASESTR if you don't have strcasestr. GIT_CHECK_FUNC(strcasestr, [NO_STRCASESTR=], diff --git a/gettext.c b/gettext.c index 8644098..9bdac56 100644 --- a/gettext.c +++ b/gettext.c @@ -1,13 +1,17 @@ #include "exec_cmd.h" #include <locale.h> #include <libintl.h> +#ifdef HAVE_LIBCHARSET_H +#include <libcharset.h> +#else #include <langinfo.h> +#endif #include <stdlib.h> extern void git_setup_gettext(void) { char *podir; char *envdir = getenv("GIT_TEXTDOMAINDIR"); - char *charset; + const char *charset; if (envdir) { (void)bindtextdomain("git", envdir); @@ -20,7 +24,11 @@ extern void git_setup_gettext(void) { (void)setlocale(LC_MESSAGES, ""); (void)setlocale(LC_CTYPE, ""); +#ifdef HAVE_LIBCHARSET_H + charset = locale_charset(); +#else charset = nl_langinfo(CODESET); +#endif (void)bind_textdomain_codeset("git", charset); (void)setlocale(LC_CTYPE, "C"); (void)textdomain("git"); -- 1.7.3.159.g610493 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v3] gettext: use libcharset when available 2010-09-29 13:40 ` [PATCH v2] " Ævar Arnfjörð Bjarmason @ 2010-09-29 13:43 ` Ævar Arnfjörð Bjarmason 0 siblings, 0 replies; 12+ messages in thread From: Ævar Arnfjörð Bjarmason @ 2010-09-29 13:43 UTC (permalink / raw) To: git; +Cc: Erik Faye-Lund, Junio C Hamano, Ævar Arnfjörð Bjarmason From: Erik Faye-Lund <kusmabite@gmail.com> Change the git_setup_gettext function to use libcharset to query the character set of the current locale if it's available. I.e. use it instead of nl_langinfo if HAVE_LIBCHARSET_H is set. The GNU gettext manual recommends using langinfo.h's nl_langinfo(CODESET) to acquire the current character set, but on systems that have libcharset.h's locale_charset() using the latter is either saner, or the only option on those systems. GNU and Solaris have a nl_langinfo(CODESET), FreeBSD can use either, but MinGW and some others need to use libcharset.h's locale_charset() instead. Since locale_charset returns a const char* instead of char* as nl_langinfo does the type of the variable we're using to store the charset in git_setup_gettext has been changed. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- On Wed, Sep 29, 2010 at 13:40, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote: > From: Erik Faye-Lund <kusmabite@gmail.com> > On Wed, Sep 29, 2010 at 13:34, Erik Faye-Lund <kusmabite@gmail.com> wrote: >> Very minor nit: It's officially spelled MinGW, with an upper-case G. > > Did s/MingW/MinGW/ in the content & message in this v2. Discard that one, I accidentally changed some unrelated mention of MingW to MinGW. Makefile | 17 +++++++++++++++++ config.mak.in | 1 + configure.ac | 6 ++++++ gettext.c | 10 +++++++++- 4 files changed, 33 insertions(+), 1 deletions(-) diff --git a/Makefile b/Makefile index 680e578..49a3386 100644 --- a/Makefile +++ b/Makefile @@ -43,6 +43,12 @@ all:: # on platforms where we don't expect glibc (Linux, Hurd, # GNU/kFreeBSD), which includes libintl. # +# Define HAVE_LIBCHARSET_H if you haven't set NO_GETTEXT and you can't +# trust the langinfo.h's nl_langinfo(CODESET) function to return the +# current character set. GNU and Solaris have a nl_langinfo(CODESET), +# FreeBSD can use either, but MinGW and some others need to use +# libcharset.h's locale_charset() instead. +# # Define GNU_GETTEXT if you're using the GNU implementation of # libintl. We define this everywhere except on Solaris, which has its # own gettext implementation. If GNU_GETTEXT is set we'll use GNU @@ -792,6 +798,10 @@ ifndef NO_GETTEXT # Systems that don't use GNU gettext are the exception. Only # Solaris has a mature non-GNU gettext implementation. GNU_GETTEXT = YesPlease + + # Since we assume a GNU gettext by default we also assume a + # GNU-like langinfo.h by default + HAVE_LIBCHARSET_H = endif # We choose to avoid "if .. else if .. else .. endif endif" @@ -1180,6 +1190,9 @@ ifneq (,$(wildcard ../THIS_IS_MSYSGIT)) EXTLIBS += /mingw/lib/libz.a NO_R_TO_GCC_LINKER = YesPlease INTERNAL_QSORT = YesPlease +ifndef NO_GETTEXT + HAVE_LIBCHARSET_H = YesPlease +endif else NO_CURL = YesPlease endif @@ -1964,6 +1977,10 @@ config.s config.o: EXTRA_CPPFLAGS = -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"' http.s http.o: EXTRA_CPPFLAGS = -DGIT_HTTP_USER_AGENT='"git/$(GIT_VERSION)"' +ifdef HAVE_LIBCHARSET_H +gettext.s gettext.o: EXTRA_CPPFLAGS = -DHAVE_LIBCHARSET_H +endif + ifdef NO_EXPAT http-walker.s http-walker.o: EXTRA_CPPFLAGS = -DNO_EXPAT endif diff --git a/config.mak.in b/config.mak.in index 9f47aa5..969cbaa 100644 --- a/config.mak.in +++ b/config.mak.in @@ -34,6 +34,7 @@ NO_CURL=@NO_CURL@ NO_EXPAT=@NO_EXPAT@ NO_LIBGEN_H=@NO_LIBGEN_H@ HAVE_PATHS_H=@HAVE_PATHS_H@ +HAVE_LIBCHARSET_H=@HAVE_LIBCHARSET_H@ NO_GETTEXT=@NO_GETTEXT@ NEEDS_LIBICONV=@NEEDS_LIBICONV@ NEEDS_SOCKET=@NEEDS_SOCKET@ diff --git a/configure.ac b/configure.ac index 1821d89..b06bad1 100644 --- a/configure.ac +++ b/configure.ac @@ -810,6 +810,12 @@ AC_CHECK_HEADER([libintl.h], [NO_GETTEXT=YesPlease]) AC_SUBST(NO_GETTEXT) # +# Define HAVE_LIBCHARSET_H if have libcharset.h +AC_CHECK_HEADER([libcharset.h], +[HAVE_LIBCHARSET_H=YesPlease], +[HAVE_LIBCHARSET_H=]) +AC_SUBST(HAVE_LIBCHARSET_H) +# # Define NO_STRCASESTR if you don't have strcasestr. GIT_CHECK_FUNC(strcasestr, [NO_STRCASESTR=], diff --git a/gettext.c b/gettext.c index 8644098..9bdac56 100644 --- a/gettext.c +++ b/gettext.c @@ -1,13 +1,17 @@ #include "exec_cmd.h" #include <locale.h> #include <libintl.h> +#ifdef HAVE_LIBCHARSET_H +#include <libcharset.h> +#else #include <langinfo.h> +#endif #include <stdlib.h> extern void git_setup_gettext(void) { char *podir; char *envdir = getenv("GIT_TEXTDOMAINDIR"); - char *charset; + const char *charset; if (envdir) { (void)bindtextdomain("git", envdir); @@ -20,7 +24,11 @@ extern void git_setup_gettext(void) { (void)setlocale(LC_MESSAGES, ""); (void)setlocale(LC_CTYPE, ""); +#ifdef HAVE_LIBCHARSET_H + charset = locale_charset(); +#else charset = nl_langinfo(CODESET); +#endif (void)bind_textdomain_codeset("git", charset); (void)setlocale(LC_CTYPE, "C"); (void)textdomain("git"); -- 1.7.3.159.g610493 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH/RFC 1/2] gettext: use const char* instead of char* 2010-09-28 17:42 ` Erik Faye-Lund 2010-09-28 18:29 ` [PATCH/RFC 0/2] use libcharset.h with gettext if available Ævar Arnfjörð Bjarmason @ 2010-09-28 18:29 ` Ævar Arnfjörð Bjarmason 1 sibling, 0 replies; 12+ messages in thread From: Ævar Arnfjörð Bjarmason @ 2010-09-28 18:29 UTC (permalink / raw) To: git; +Cc: Erik Faye-Lund, Ævar Arnfjörð Bjarmason From: Erik Faye-Lund <kusmabite@gmail.com> Change the charset variable in git_setup_gettext from char* to const char*. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- gettext.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/gettext.c b/gettext.c index 8644098..d20bb39 100644 --- a/gettext.c +++ b/gettext.c @@ -7,7 +7,7 @@ extern void git_setup_gettext(void) { char *podir; char *envdir = getenv("GIT_TEXTDOMAINDIR"); - char *charset; + const char *charset; if (envdir) { (void)bindtextdomain("git", envdir); -- 1.7.3.159.g610493 ^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2010-09-29 13:44 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-09-28 16:05 [PATCH] gettext: use libcharset when available Erik Faye-Lund 2010-09-28 17:07 ` Ævar Arnfjörð Bjarmason 2010-09-28 17:42 ` Erik Faye-Lund 2010-09-28 18:29 ` [PATCH/RFC 0/2] use libcharset.h with gettext if available Ævar Arnfjörð Bjarmason 2010-09-28 21:47 ` Erik Faye-Lund 2010-09-29 10:00 ` Ævar Arnfjörð Bjarmason 2010-09-29 11:41 ` Erik Faye-Lund 2010-09-29 13:07 ` [PATCH] gettext: use libcharset when available Ævar Arnfjörð Bjarmason 2010-09-29 13:34 ` Erik Faye-Lund 2010-09-29 13:40 ` [PATCH v2] " Ævar Arnfjörð Bjarmason 2010-09-29 13:43 ` [PATCH v3] " Ævar Arnfjörð Bjarmason 2010-09-28 18:29 ` [PATCH/RFC 1/2] gettext: use const char* instead of char* Ævar Arnfjörð Bjarmason
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).