[LTP] [PATCH v3] tst_test.sh: Normalize the locale

Cyril Hrubis chrubis@suse.cz
Fri Oct 21 14:42:50 CEST 2022


Hi!
> > > > diff --git a/testcases/lib/tst_test.sh b/testcases/lib/tst_test.sh
> > > > index 28b7d12ba..5ebbe1d25 100644
> > > > --- a/testcases/lib/tst_test.sh
> > > > +++ b/testcases/lib/tst_test.sh
> > > > @@ -831,3 +831,5 @@ if [ -z "$TST_NO_DEFAULT_RUN" ]; then
> > > >  		fi
> > > >  	fi
> > > >  fi
> > > > +
> > > > +export LC_ALL=C
> 
> > > Thinking about it twice this might have impact on other tests.
> > > Li, Cyril, any idea about it?
> 
> > Actually I think that we should have put this into the tst_test.sh from
> > the start. We do have this as a workaround in du01.sh and telnet01.sh
> > already.
> 
> > The plus side is that all possible bugreports from users will have all
> > messages in english which would make debugging easier.
> 
> Thanks for acking this.
> 
> I suppose Akihiko is correct that we don't have to put it via setlocale()
> in C API, right?

I do not think so. It's not entirely clear from documentation how this
is supposed to work. However it seems that in bash the effect is
immediate, if you export new locale and then type nonexisting command
name to bash prompt to get a message from bash it's in the new locale.
So either setlocale() is not needed or bash calls it if it detects that
one of the LC_ variables has been changed and calls it.

For dash it does not seem that it has been translated at all, it
produces messages in english either way, so we do not have to care.

And all localized programs that we start from the shell after the export
do call setlocale() at the start of the main(). That is actually
required to enable locale support to begin with.

> Also I guess you prefer this version (LC_ALL=C). I suggested unset LC_ALL;
> export LC_COLLATE=C; export LC_NUMERIC=C as it's used in kernel's Makefile (they
> have more there, but IMHO only this is relevant for us).

I do not think that LC_COLLATE and LC_NUMERIC is enough, we want actuall
messages in english. If we do not want to use LC_ALL, which is probably
the easiest we should use at least LC_MESSAGES and LC_NUMERIC but
possibly LC_TIME too since date and time can be part of the messages we
do parse as well.

-- 
Cyril Hrubis
chrubis@suse.cz


More information about the ltp mailing list