]> mj.ucw.cz Git - libucw.git/blobdiff - charset/charconv.c
Added bskip() which skips the given number of bytes by reading.
[libucw.git] / charset / charconv.c
index 8da42ffec31ab13e81fca811fcb55b473ba894e4..973d22c083ee0c15856422d9a77cba65705424af 100644 (file)
@@ -1,18 +1,15 @@
 /*
 /*
- *     Character Set Conversion Library 1.0
+ *     Character Set Conversion Library 1.1
  *
  *
- *     (c) 1998 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
+ *     (c) 1998--2001 Martin Mares <mj@ucw.cz>
  *
  *     This software may be freely distributed and used according to the terms
  *
  *     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 "charconv.h"
-#include "chartable.h"
-
-#ifndef NULL
-#define NULL ((void *)0)
-#endif
+#include "lib/lib.h"
+#include "charset/charconv.h"
+#include "charset/chartable.h"
 
 void
 conv_init(struct conv_context *c)
 
 void
 conv_init(struct conv_context *c)
@@ -184,7 +181,7 @@ conv_to_utf8(struct conv_context *c)
        {
          if (d + 3 > de)
            goto dend;
        {
          if (d + 3 > de)
            goto dend;
-         *d++ = 0xc0 | (code >> 12);
+         *d++ = 0xe0 | (code >> 12);
          *d++ = 0x80 | ((code >> 6) & 0x3f);
          *d++ = 0x80 | (code & 0x3f);
        }
          *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;
 }
     }
   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]);
+}