mc.spec z HEAD

Arkadiusz Miskiewicz arekm w pld-linux.org
Sob, 15 Paź 2005, 16:17:39 CEST


On Saturday 01 of October 2005 17:09, Robert 'dzeus' Graużenis wrote:
> 1. Wsparcie dla utf8 psuje kodowanie iso-8859-2 przy locale pl_PL:
>
> F3 na grip.spec i:
> %description -l
> pl Grip jest odtwarzaczem kompaktów. Mo|e by^G u|ywany jako front-end
> do programów [ci^Egaj^Ecych [cie|ki CD oraz kompresuj^Ecych pliki
> dzwi^Ykowe do formatu MP3. Umo|liwia [ci^Eganie tak caBych jak i wybranych
> cz^Y[ci utworu. Program ten wspiera protokóB CDDB w celu
> [ci^Egania/wysyBania danych o kompakcie z/do umo|liwiaj^Ecego tego typu
> operacje serwera.
>
> przebudowany z --without utf8, kodowanie poprawne.

Problem jest w src/view.c w fragmencie - całe przekodowywanie do wide char 
jest ok dla znaków ascii, a dla pozosałych jest kaplica.

#ifndef UTF8
            if (view->viewer_nroff_flag && c == '\b') {
#else /* UTF8 */
                mblen = 1;
                mbbuf[0] = convert_to_display_c(c);
                mbbuf[1] = 0;

                while (mblen < MB_LEN_MAX) {
                    int res;
                    memset (&mbs, 0, sizeof (mbs));
                    res = mbrtowc (&wc, mbbuf, mblen, &mbs);
                    if (res <= 0 && res != -2) {
                        wc = '.';
                        mblen = 1;
                        break;
                    }
                    if (res == mblen)
                        break;

                    mbbuf[mblen] = convert_to_display_c (get_byte (view, from 
+ mblen));
                    mblen++;
                }
                printw("%s\n", wc);

                if (mblen == MB_LEN_MAX) {
                    wc = '.';
                    mblen = 1;
                }

                from += mblen - 1;

            if (view->viewer_nroff_flag && wc == '\b') {
#endif /* UTF8 */


gdzie potem chcą to wyświetlać:
                if (!iswprint (wc))
                    wc = '.';
                view_add_character (view, wc);

                {
                    int cw = wcwidth(wc);
                    if (cw > 1)
                        col+= cw - 1;
                }


-- 
Arkadiusz Miśkiewicz                    PLD/Linux Team
http://www.t17.ds.pwr.wroc.pl/~misiek/  http://ftp.pld-linux.org/



Więcej informacji o liście dyskusyjnej pld-devel-pl