Index: text.c =================================================================== RCS file: /cvsroot/wv/text.c,v retrieving revision 1.51 diff -u -r1.51 text.c --- text.c 2000/11/10 13:30:40 1.51 +++ text.c 2000/11/14 18:41:24 @@ -17,8 +17,10 @@ { U16 lid; /* testing adding a language */ - lid = achp->lidDefault; - if (lid == 0x400) + lid = achp->lidDefault; + /* No lidDefault for ver < WORD6 */ + /* Should try achp->lid first? */ + if (lid == 0x400 || lid == 0) lid = ps->fib.lid; /* end testing adding a language */ @@ -37,7 +39,13 @@ { /* Most Chars go through this baby */ if (charhandler) + { + if (wvQuerySupported(&ps->fib,NULL) <= WORD6) + { + chartype = 1; /* WORD6 do not use unicode */ + } return( (*charhandler)(ps,eachchar,chartype,lid) ); + } } wvError(("No CharHandler registered, programmer error\n")); return(0); @@ -167,10 +175,19 @@ size_t obuflen; /* Length of output buffer */ const char *ibuf; char *codepage; - char buffer[1]; + char buffer[2]; /* eachchar > 255 */ char buffer2[2]; - buffer[0]= (char)eachchar; + if(eachchar > 0xff) + { + buffer[0]= (char)(eachchar >> 8); + buffer[1]= (char)eachchar & 0xff; + } + else + { + buffer[0] = eachchar & 0xff; + buffer[1] = 0; + } ibuf = buffer; obuf = buffer2; @@ -192,8 +209,8 @@ return('?'); } - ibuflen = 1; - obuflen = 2; + ibuflen = 2; + obuflen = 2; p = obuf; iconv(iconv_handle, &ibuf, &ibuflen, &obuf, &obuflen); eachchar = (U8)*p++;