Re: [RFC/PATCH 1/5] gettext: fix bug in git-sh-i18n's eval_gettext() by using envsubst(1)
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- Nov 2, 2010, 08:33 UTC
- Message-ID
- <4CCFCCC8.7080603@viscovery.net>
- In-Reply-To
- <1288524860-538-2-git-send-email-avarab@gmail.com>
Am 10/31/2010 12:34, schrieb Ævar Arnfjörð Bjarmason:
Show 16 quoted lines
> Change eval_gettext(1) in git-sh-i18n.sh to use a modified version of > gettext's envsubst(1) program, instead of using a clever (but broken) > printf + eval + printf trick. > > Our previous fallback would incorrectly handle cases where the > variable being interpolated contained spaces. E.g.: > > cmd="git foo"; eval_gettext "command: \$cmd" > > Would emit "command: gitfoo", instead of the correct "command: git > foo". This happened with a message in git-am.sh that used the $cmdline > variable. > > To work around this, and to improve our variable expansion behavior > (eval has security issues) I've imported a stripped-down version of > gettext's envsubst(1) program.
Would this help the case mentioned above at all? To pass the value of 'cmd' to envsubst, you have to export it. But the code snippet above doesn't do that.
Wouldn't it be much simpler to dodge variable substitutions in the translated string entirely by rewriting such texts as (e.g.)
gettext_printf "command: %s\n" "$cmd"
and use printf in the implementation. I don't know how compatible you can make this with existing gettext implementations, though.
-- Hannes