[Cluster-devel] [PATCH 3/3] mkfs i18n:

Carlos Maiolino cmaiolino at redhat.com
Tue Sep 20 17:27:09 UTC 2011


Hi,
On Tue, Sep 06, 2011 at 08:10:06PM +0100, Steven Whitehouse wrote:
> Hi,
> 
> On Tue, 2011-09-06 at 14:41 -0300, Carlos Maiolino wrote:
> > Use rpmatch() function to get answer to
> > yes-or-no questions during mkfs confirmation
> > 
> > Signed-off-by: Carlos Maiolino <cmaiolino at redhat.com>
> > ---
> >  gfs2/mkfs/main_mkfs.c |   30 ++++++++++++++++++++++--------
> >  1 files changed, 22 insertions(+), 8 deletions(-)
> > 
> > diff --git a/gfs2/mkfs/main_mkfs.c b/gfs2/mkfs/main_mkfs.c
> > index 4751f19..d68cf98 100644
> > --- a/gfs2/mkfs/main_mkfs.c
> > +++ b/gfs2/mkfs/main_mkfs.c
> > @@ -456,8 +456,11 @@ fail:
> >  
> >  static void are_you_sure(struct gfs2_sbd *sdp)
> >  {
> > -	char input[32];
> > +	char *line = NULL;
> > +	size_t len = 0;
> >  	int fd;
> > +	int ret = -1;
> > +	int res = 0;
> >  
> >  	fd = open(sdp->device_name, O_RDONLY|O_CLOEXEC);
> >  	if (fd < 0)
> > @@ -465,14 +468,25 @@ static void are_you_sure(struct gfs2_sbd *sdp)
> >  	printf( _("This will destroy any data on %s.\n"), sdp->device_name);
> >  	check_dev_content(sdp->device_name);
> >  	close(fd);
> > -	printf( _("\nAre you sure you want to proceed? [y/n] "));
> > -	if(!fgets(input, 32, stdin))
> > -		die( _("unable to read from stdin\n"));
> > +	
> > +	do{
> > +		printf( _("\nAre you sure you want to proceed? [y/n]"));
> This means that the translator needs to know that rpmatch is being used
> and to also know how to translate this accordingly. Why not use
> nl_langinfo() to put the response strings into this message?
> 
I was looking how nl_langinfo() works, and all it does to help with yes/no 
questions is to return a regex expression (like [^[SsyY].*) to be used to match 
the user's answer, it does not return a string or char value like yes/no (en_US) or 
sim/nao(pt_BR) we can use to replace the y/n in the question string.

The rpmatch() function takes advantage of nl_langinfo() internaly to match the
customer's answer according to which l10n the system is set.

This way, even using nl_langinfo(), the translator person will still need to translate
the y/n to s/n, since is not possible to use nl_langinfo to replace these values.

What we could do, is to create an auxiliar function to check the return of nl_langinfo(),
and, according with this value, write an specific string (s/n, y/n, etc). But, imho, this
could lead to an error prone condition during string creation.

What u think?

Cheers,
-- 
--Carlos




More information about the Cluster-devel mailing list