Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Aug 2006 21:24:36 +0400 (MSD)
From:      Dmitry Morozovsky <marck@rinet.ru>
To:        "Andrey V. Elsukov" <bu7cher@yandex.ru>
Cc:        kostikbel@gmail.com, maxim@freebsd.org, freebsd-stable@freebsd.org
Subject:   Re: setlocale howto
Message-ID:  <20060812212327.Q25511@woozle.rinet.ru>
In-Reply-To: <44DE08B4.000003.11633@soapbox.yandex.ru>
References:  <44DDDCC5.000001.21350@pantene.yandex.ru> <20060812155431.GG25753@deviant.kiev.zoral.com.ua> <44DE08B4.000003.11633@soapbox.yandex.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 12 Aug 2006, Andrey V. Elsukov wrote:

AVE> >On Sat, Aug 12, 2006 at 05:51:01PM +0400, Andrey V. Elsukov wrote:
AVE> >>     for(i = 0; i < sizeof(buf); i++)
AVE> >>         buf[i] = (char)toupper(buf[i]);
AVE> >
AVE> >         buf[i] = (char)toupper((unsigned char)buf[i]);
AVE> >Standard integer promotion promotes KOI8-R char codes like 0xd4 into 0xffffffd4.
AVE> >Since such codepoints are not defined for KOI8-R, toupper returns them
AVE> >unchaged, as specified in documentation.
AVE> 
AVE> Thanks, this works! But why this example works on Linux without type conversions?

Linux has unsigned chars by default, while FreeBSD (and other current *BSDs) 
signed.

Even large projects like PostgreSQL stepped into this trap at least once ;-)

Sincerely,
D.Marck                                     [DM5020, MCK-RIPE, DM3-RIPN]
------------------------------------------------------------------------
*** Dmitry Morozovsky --- D.Marck --- Wild Woozle --- marck@rinet.ru ***
------------------------------------------------------------------------



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