Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Apr 2003 08:40:12 -0700 (PDT)
From:      "Sergey A. Osokin" <osa@freebsd.org.ru>
To:        freebsd-standards@FreeBSD.org
Subject:   Re: standards/51292: [PATCH] add ecvt()/fcvt()/gcvt() functions (SUSv3)
Message-ID:  <200304251540.h3PFeCv4084528@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR standards/51292; it has been noted by GNATS.

From: "Sergey A. Osokin" <osa@freebsd.org.ru>
To: Alexey Zelkin <phantom@FreeBSD.org.ua>
Cc: FreeBSD-gnats-submit@freebsd.org
Subject: Re: standards/51292: [PATCH] add ecvt()/fcvt()/gcvt() functions (SUSv3)
Date: Fri, 25 Apr 2003 19:33:06 +0400

 On Fri, Apr 25, 2003 at 05:02:07PM +0300, Alexey Zelkin wrote:
 > On Fri, Apr 25, 2003 at 04:32:10PM +0400, Sergey A. Osokin wrote:
 > > On Fri, Apr 25, 2003 at 03:19:37PM +0300, Alexey Zelkin wrote:
 > > > On Fri, Apr 25, 2003 at 12:38:51PM +0400, Sergey A. Osokin wrote:
 > > > 
 > > > > > > >Number:         51292
 > > > > > > >Category:       standards
 > > > > > > >Synopsis:       [PATCH] add ecvt()/fcvt()/gcvt() functions (SUSv3)
 > 
 > > > Actually, all these cases should be handled by setlocale() itself.  And
 > > > after call to 'setlocale()' you should use lconv() to receive current
 > > > radix character.
 > > > I also would object to using of setlocale() from libc's function internally.
 > > 
 > > Hmm, but from SUSv3:
 > > <quote>
 > > The radix character is determined by the current locale.  If
 > > setlocale() has not been called successfully, the default locale,
 > > POSIX, is used.  The default locale specifies a period
 > > ( '.' ) as the radix character.
 > > </quote>
 > 
 > And what?  It does not mean that setlocale() should be called
 > in *cvt() functions.
 > 
 > Can you ever count amount of possible problems caused by call to setlocale()
 > in middle of libc function ?
 
 BTW
         if (setlocale(LC_NUMERIC, NULL) == NULL) {
                 radix  = '.';
                 n_sign = '-';
                 p_sign = '+';
         } else {
                 lc = localeconv();
                 radix  = *lc->decimal_point;
                 n_sign = *lc->negative_sign;
                 p_sign = *lc->positive_sign;
         }
 
 Correct?
 
 > > > It's a application's problem to decide which locale to use and [fge]cvt()
 > > > should use locale previously set by application.
 > > 
 > > AFAIK only gcvt() have locale-specific "problem".  I can't find
 > > any locale-specific words in documentation of [ef]cvt.  Correct
 > > me if I'm wrong...
 > 
 > You may find 'radix character' related words there.
 
 -- 
 
 Rgdz,                        /"\  ASCII RIBBON CAMPAIGN
 Sergey Osokin aka oZZ,       \ /    AGAINST HTML MAIL
 http://ozz.pp.ru/             X          AND NEWS
                              / \



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304251540.h3PFeCv4084528>