In commit b9b9c22, Ævar addressed a issue when gettextized a message started with "--", such as "--cached cannot be used with --files", the first word in the message would be treated as an option of gettext, and might raise a bad option error. The solution Ævar provided is to add a extra "--" option between gettext and the message. But Vincent fount out later that the extra "--" was extracted as gettext message by xgettext instead of the real message. See: * http://thread.gmane.org/gmane.comp.version-control.git/199042 In order to fix this dilemma, we move the extra "--" option from gettext to gettext wrapper (gettextln, and eval_gettext), and gettextize the message using the wrapper function instead of gettext itself. But for system with libintl's gettext.sh, eval_gettext and eval_gettextln won't have this fix. Signed-off-by: Jiang Xin <worldhello.net@xxxxxxxxx> Signed-off-by: Andreas Schwab <schwab@xxxxxxxxxxxxxx> --- git-sh-i18n.sh | 8 ++++++-- git-submodule.sh | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/git-sh-i18n.sh b/git-sh-i18n.sh index 6a27f..1c61e4 100644 --- a/git-sh-i18n.sh +++ b/git-sh-i18n.sh @@ -49,7 +49,7 @@ gnu) gettext_without_eval_gettext) # Solaris has a gettext(1) but no eval_gettext(1) eval_gettext () { - gettext "$1" | ( + gettext -- "$1" | ( export PATH $(git sh-i18n--envsubst --variables "$1"); git sh-i18n--envsubst "$1" ) @@ -68,10 +68,14 @@ poison) ;; *) gettext () { + # Bypass options, such as '--'. + shift $(($# - 1)) printf "%s" "$1" } eval_gettext () { + # Bypass options, such as '--'. + shift $(($# - 1)) printf "%s" "$1" | ( export PATH $(git sh-i18n--envsubst --variables "$1"); git sh-i18n--envsubst "$1" @@ -82,7 +86,7 @@ esac # Git-specific wrapper functions gettextln () { - gettext "$1" + gettext -- "$1" echo } diff --git a/git-submodule.sh b/git-submodule.sh index 5c61a..bb9f6 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -710,7 +710,7 @@ cmd_summary() { if [ -n "$files" ] then test -n "$cached" && - die "$(gettext -- "--cached cannot be used with --files")" + die "$(gettextln "--cached cannot be used with --files")" diff_cmd=diff-files head= fi -- 1.7.10.2.559.g0ba0f00 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html