Re: [PATCH 1/6] i18n win32: add git-am eval_gettext variable prefix

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 5/26/2011 1:19, schrieb Ãvar ArnfjÃrà Bjarmason:
> -		eval_gettext 'Patch failed at $msgnum $FIRSTLINE'; echo
> +		GIT_I18N_VARIABLE_msgnum=$msgnum
> +		GIT_I18N_VARIABLE_FIRSTLINE=$FIRSTLINE
> +		eval_gettext 'Patch failed at $GIT_I18N_VARIABLE_msgnum $GIT_I18N_VARIABLE_FIRSTLINE'; echo

That's not pretty.

I wonder whether it is possible to automate the variable prefix. Looking
at the definition of eval_gettext()

eval_gettext () {
	printf "%s" "$1" | (
		export PATH $(git sh-i18n--envsubst --variables "$1");
		git sh-i18n--envsubst "$1"
	)
}

I gather that the actual substitution of variable values is done by
sh-i18n--envsubst, and not by the shell (right?). Let's look at an example:

	git sh-i18n--envsubst --variables '$foo and $bar'

produces

	foo
	bar

What if it produced

	GIT_I18N_VARIABLE_foo=$foo
	GIT_I18N_VARIABLE_bar=$bar
	export GIT_I18N_VARIABLE_foo GIT_I18N_VARIABLE_bar

then the definition of eval_gettext() would look like

eval_gettext () {
	printf "%s" "$1" | (
		export PATH
		eval "$(git sh-i18n--envsubst --variables "$1")"
		git sh-i18n--envsubst "$1"
	)
}

and the second call of sh-i18n--envsubst should replace $foo and $bar that
it sees on stdin by the values of GIT_I18N_VARIABLE_foo and
GIT_I18N_VARIABLE_bar from the environment.

What do you think?

BTW, if you re-roll the series, would you mind shortening the prefix to,
say, _I18N__ because on Windows the variables names count towards the
environment budget, which is restricted to 32k characters.

BTW2, the following patch is needed to avoid a crash of an invocation of
'git sh-i18n--envsubst' without arguments.

-- Hannes

(Warning: hand-edited patch text)

diff --git a/sh-i18n--envsubst.c b/sh-i18n--envsubst.c
index 7125093..8104973 100644
--- a/sh-i18n--envsubst.c
+++ b/sh-i18n--envsubst.c
@@ -76,2 +76,3 @@ main (int argc, char *argv[])
 	  error ("we won't substitute all variables on stdin for you");
+	  break;
 	  /*
--
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


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]