Re: [PATCH] parseopt: do not translate empty help string
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:54:31
Thomas Rast [off-list ref] writes:
quoted hunk
The gettext .po files have a header, but it looks like the translation specification for an empty string. This results in _("") actually returning that header. Prevent parseopt from passing empty strings to gettext when it displays help about commands. In some instances it already did this, but git-grep's --or etc. caught another case. Signed-off-by: Thomas Rast <redacted> --- parse-options.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)diff --git a/parse-options.c b/parse-options.c index c1c66bd..f95bbb2 100644 --- a/parse-options.c +++ b/parse-options.c@@ -562,7 +562,8 @@ static int usage_with_options_internal(struct parse_opt_ctx_t *ctx, fputc('\n', outfile); pad = USAGE_OPTS_WIDTH; } - fprintf(outfile, "%*s%s\n", pad + USAGE_GAP, "", _(opts->help)); + fprintf(outfile, "%*s%s\n", pad + USAGE_GAP, "", + *opts->help ? _(opts->help) : ""); } fputc('\n', outfile);
Thanks; this is a tricky bit to catch and makes me wonder where else we have a similar breakage. Perhaps we would want to do this instead? I dunno. gettext.h | 2 ++ 1 file changed, 2 insertions(+)
diff --git i/gettext.h w/gettext.h
index 57ba8bb..376297b 100644
--- i/gettext.h
+++ w/gettext.h@@ -44,6 +44,8 @@ extern int use_gettext_poison(void); static inline FORMAT_PRESERVING(1) const char *_(const char *msgid) { + if (!*msgid) + return ""; return use_gettext_poison() ? "# GETTEXT POISON #" : gettext(msgid); }