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

Re: [libvirt] libvirt-guests output



Le mardi 14 décembre 2010 21:03:26, Laurent Léonard a écrit :
> 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.

"eval_gettext" works with Bash and Dash if we add
. /usr/bin/gettext.sh
in the script.

So "eval_gettext" seems to be the right way...

-- 
Laurent Léonard


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