X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=inline;f=charset%2Fcharconv.c;h=973d22c083ee0c15856422d9a77cba65705424af;hb=d6279d601cfb3f86e0bbe3fb78b4daa9af824bf3;hp=7ef6c8947351db428f9b988f4857463fa6e5825c;hpb=0860307de69e9a3fe012afb5311465a5ff1f1186;p=libucw.git diff --git a/charset/charconv.c b/charset/charconv.c index 7ef6c894..973d22c0 100644 --- a/charset/charconv.c +++ b/charset/charconv.c @@ -1,19 +1,16 @@ /* - * Character Set Conversion Library 1.0 + * Character Set Conversion Library 1.1 * - * (c) 1998 Martin Mares + * (c) 1998--2001 Martin Mares * * This software may be freely distributed and used according to the terms - * of the GNU General Public License. + * of the GNU Lesser General Public License. */ +#include "lib/lib.h" #include "charset/charconv.h" #include "charset/chartable.h" -#ifndef NULL -#define NULL ((void *)0) -#endif - void conv_init(struct conv_context *c) { @@ -184,7 +181,7 @@ conv_to_utf8(struct conv_context *c) { if (d + 3 > de) goto dend; - *d++ = 0xc0 | (code >> 12); + *d++ = 0xe0 | (code >> 12); *d++ = 0x80 | ((code >> 6) & 0x3f); *d++ = 0x80 | (code & 0x3f); } @@ -261,3 +258,21 @@ conv_set_charset(struct conv_context *c, int src, int dest) } c->state = 0; } + +unsigned int +conv_x_to_ucs(unsigned int x) +{ + return x_to_uni[x]; +} + +unsigned int +conv_ucs_to_x(unsigned int ucs) +{ + return uni_to_x[ucs >> 8U][ucs & 0xff]; +} + +unsigned int +conv_x_count(void) +{ + return sizeof(x_to_uni) / sizeof(x_to_uni[0]); +}