mirror of
https://github.com/git/git.git
synced 2025-04-07 04:47:44 +00:00
Merge branch 'km/gettext-n'
* km/gettext-n: gettext.h: add parentheses around N_ expansion if supported
This commit is contained in:
commit
b19aab58f1
17
Makefile
17
Makefile
@ -348,6 +348,15 @@ all::
|
||||
#
|
||||
# Define NO_HMAC_CTX_CLEANUP if your OpenSSL is version 0.9.6b or earlier to
|
||||
# cleanup the HMAC context with the older HMAC_cleanup function.
|
||||
#
|
||||
# Define USE_PARENS_AROUND_GETTEXT_N to "yes" if your compiler happily
|
||||
# compiles the following initialization:
|
||||
#
|
||||
# static const char s[] = ("FOO");
|
||||
#
|
||||
# and define it to "no" if you need to remove the parentheses () around the
|
||||
# constant. The default is "auto", which means to use parentheses if your
|
||||
# compiler is detected to support it.
|
||||
|
||||
GIT-VERSION-FILE: FORCE
|
||||
@$(SHELL_PATH) ./GIT-VERSION-GEN
|
||||
@ -955,6 +964,14 @@ ifneq (,$(SOCKLEN_T))
|
||||
BASIC_CFLAGS += -Dsocklen_t=$(SOCKLEN_T)
|
||||
endif
|
||||
|
||||
ifeq (yes,$(USE_PARENS_AROUND_GETTEXT_N))
|
||||
BASIC_CFLAGS += -DUSE_PARENS_AROUND_GETTEXT_N=1
|
||||
else
|
||||
ifeq (no,$(USE_PARENS_AROUND_GETTEXT_N))
|
||||
BASIC_CFLAGS += -DUSE_PARENS_AROUND_GETTEXT_N=0
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(uname_S),Darwin)
|
||||
ifndef NO_FINK
|
||||
ifeq ($(shell test -d /sw/lib && echo y),y)
|
||||
|
24
gettext.h
24
gettext.h
@ -63,6 +63,30 @@ const char *Q_(const char *msgid, const char *plu, unsigned long n)
|
||||
}
|
||||
|
||||
/* Mark msgid for translation but do not translate it. */
|
||||
#if !USE_PARENS_AROUND_GETTEXT_N
|
||||
#define N_(msgid) msgid
|
||||
#else
|
||||
/*
|
||||
* Strictly speaking, this will lead to invalid C when
|
||||
* used this way:
|
||||
* static const char s[] = N_("FOO");
|
||||
* which will expand to
|
||||
* static const char s[] = ("FOO");
|
||||
* and in valid C, the initializer on the right hand side must
|
||||
* be without the parentheses. But many compilers do accept it
|
||||
* as a language extension and it will allow us to catch mistakes
|
||||
* like:
|
||||
* static const char *msgs[] = {
|
||||
* N_("one")
|
||||
* N_("two"),
|
||||
* N_("three"),
|
||||
* NULL
|
||||
* };
|
||||
* (notice the missing comma on one of the lines) by forcing
|
||||
* a compilation error, because parenthesised ("one") ("two")
|
||||
* will not get silently turned into ("onetwo").
|
||||
*/
|
||||
#define N_(msgid) (msgid)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -875,4 +875,8 @@ struct tm *git_gmtime_r(const time_t *, struct tm *);
|
||||
#define gmtime_r git_gmtime_r
|
||||
#endif
|
||||
|
||||
#if !defined(USE_PARENS_AROUND_GETTEXT_N) && defined(__GNUC__)
|
||||
#define USE_PARENS_AROUND_GETTEXT_N 1
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user