Bug nalezen: isprint() vs diakriticka znamenka

Michal Hucik chaky na goliash.inext.cz
Pondělí Září 7 14:58:43 CEST 1998


Cejka Rudolf (cejkar na dcse.fee.vutbr.cz) wrote:
> Michal Hucik (chaky na goliash.inext.cz) wrote:

[ ... ]

> Zadrzte! Takove nesmysly mu neposilejte! Opet opakuji: I v teto
> dobe stale existuje spousta lidi, kteri toho o locales moc nevi (vcetne
> me ;-)). Ale prave Damon Chaplin podle zdrojovek, ktere jsem videl,
> naopak locales jako jeden z mala pravdepodobne ovlada!
> (Vyrez z programu, ktery jsem videl, naopak vypadal docela korektne.)

Ne, problem byl v tom, ze v urcite casti programu zmenil locales na 'C' aby
mel zajisteno ze desetinna tecka bude teckou a nikoliv carkou. Bohuzel menil
LC_ALL a stacilo zmenit jen LC_NUMERIC, takze kdyz se v nasledujici funkci
zavolal test isprint(), tak neprobehl korektne ....

> Vystup by mel vypadat priblizne takto:

Zde je muj vystup, myslim ze jev poradku ... kazdopadne dekuji za testovaci
programek :)

----
LC_ALL = C (printable characters: 95)
setlocale(LC_CTYPE, "")
LC_ALL =
LC_CTYPE=cs;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C
(printable characters: 190)
setlocale(LC_ALL, "C") (old saved)
LC_ALL = C (printable characters: 95)
setlocale(LC_ALL,
"LC_CTYPE=cs;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C")
LC_ALL =
LC_CTYPE=cs;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C
(printable characters: 190)
----

--
   "http://www.inext.cz/www/chaky/", "mailto:chaky na vs.inext.cz"

    ---===   Beskyde, Beskyde, kdo po tobe SCSI ... ?   ===---


Další informace o konferenci Linux