Thread (1 message) 1 message, 1 author, 2016-06-15

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);
 }
 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help