[libvirt] libvirt-guests output

Laurent Léonard laurent at open-minds.org
Tue Dec 14 20:03:26 UTC 2010


Le mardi 14 décembre 2010 19:34:01, Eric Blake a écrit :
> On 12/14/2010 10:58 AM, Laurent Léonard wrote:
> >>>     New patch 0010-Debianize-libvirt-guests.patch
> >>> 
> >>> +         if ! $configured; then
> >>> +-            echo $"Ignoring guests on $uri URI"
> >>> ++            echo "Ignoring guests on $uri URI"
> >> 
> >> It might make sense to introduce a function:
> >> 
> >> libvirt_echo() {
> >> 
> >> 	echo $"$@"
> >> 
> >> }
> >> 
> >> So that the lines above become:
> >>          if ! $configured; then
> >>          
> >>             libvirt_echo "Ignoring guests on $uri URI"
> >> 
> >> If we get this integrated upstream  we'd only have to patch a single
> >> line which might future merging easier. We might even be able to either
> >> pick $" or just " by looking at the shell used.
> > 
> > What about that proposition ?
> 
> Certainly it is better to go through a wrapper function, to minimize the
> number of places where translation is attempted.  And run-time detection
> of which method to use seems easy enough; something like this (minimally
> tested):
> 
> if (LC_ALL=C; test $"x" = x); then
>     libvirt_echo() {
>         echo $"$1"
>     }
> else
>     libvirt_echo() {
>         gettext "$1"
>     }
> fi
> 
> But there is still the issue of marking translated strings in such a way
> that xgettext can find them.  How do other debian-ized init scripts
> handle this problem?  Is there something in
> $sysconfdir/rc.d/init.d/functions that is already common between distros
> to aid in this effort?
> 
> Oh, and this is interesting reading[1], since it claims the use of $""
> in bash is a security hole.  Instead, the current gettext
> recommendations for adding i18n to a shell script are to source the file
> gettext.sh, set TEXTDOMAIN and TEXTDOMAINDIR, and use gettext(1) and
> friends everywhere in the first place.  But I didn't find out how
> xgettext works on shell scripts (if it even can); xgettext -L doesn't
> seem to support a shell-like language.  I guess I'll ask for more advice
> on the gettext mailing list.
> 
> [1] http://www.gnu.org/software/gettext/manual/gettext.html#bash
> 
> But if we go with the gettext advice of avoiding $"" altogether, then
> there's no need to go through an intermediate function, and we should
> instead mark every translated string by using gettext instead of echo.

"xgettext -L Shell" prints the following warning message when using with a 
script that use the $"..." syntax:
the syntax $"..." is deprecated due to security reasons; use eval_gettext 
instead

"eval_gettext" seems to work like $"..." with Bash, but doesn't work with 
Dash...

Indeed if we find a solution that works with Bash and Dash there is no need to 
go through an intermediate function.

-- 
Laurent Léonard




More information about the libvir-list mailing list