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>