[PATCH 1/5] i18n: keep the last \n even when text is poisoned
From: Nguyễn Thái Ngọc Duy <hidden>
Date: 2016-06-15 22:53:15
Subsystem:
the rest · Maintainer:
Linus Torvalds
This helps maintain the layout somewhat when translatable text is poisoned. Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> --- gettext.c | 10 ++++++++++ gettext.h | 6 ++++-- 2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/gettext.c b/gettext.c
index f75bca7..60bc2ad 100644
--- a/gettext.c
+++ b/gettext.c@@ -24,6 +24,16 @@ int use_gettext_poison(void) poison_requested = getenv("GIT_GETTEXT_POISON") ? 1 : 0; return poison_requested; } + +const char *poison_text(const char *msgid) +{ + int len = strlen(msgid); + if (len && msgid[len-1] == '\n') + return "# GETTEXT POISON #\n"; + else + return "# GETTEXT POISON #"; +} + #endif #ifndef NO_GETTEXT
diff --git a/gettext.h b/gettext.h
index 57ba8bb..2313c84 100644
--- a/gettext.h
+++ b/gettext.h@@ -38,20 +38,22 @@ static inline void git_setup_gettext(void) #ifdef GETTEXT_POISON extern int use_gettext_poison(void); +extern const char *poison_text(const char *msgid); #else #define use_gettext_poison() 0 +#define poison_text(x) NULL #endif static inline FORMAT_PRESERVING(1) const char *_(const char *msgid) { - return use_gettext_poison() ? "# GETTEXT POISON #" : gettext(msgid); + return use_gettext_poison() ? poison_text(msgid) : gettext(msgid); } static inline FORMAT_PRESERVING(1) FORMAT_PRESERVING(2) const char *Q_(const char *msgid, const char *plu, unsigned long n) { if (use_gettext_poison()) - return "# GETTEXT POISON #"; + return poison_text(msgid); return ngettext(msgid, plu, n); }
--
1.7.3.1.256.g2539c.dirty