X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Futf8.c;h=8c28d3ada5aacb60047ed4f92b0abb09b9c23395;hb=ecc1ee5b177fdc11ed531dfe13b5c3aae52b2843;hp=37ee04cc4bae4b61061949d6bf7b8975af06ac59;hpb=65f1b9fce2d1d86df7d75645fb46fbba32dd01e3;p=yaz-moved-to-github.git diff --git a/src/utf8.c b/src/utf8.c index 37ee04c..8c28d3a 100644 --- a/src/utf8.c +++ b/src/utf8.c @@ -1,7 +1,6 @@ -/* - * Copyright (C) 1995-2008, Index Data ApS +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2008 Index Data * See the file LICENSE for details. - * */ /** * \file @@ -19,10 +18,11 @@ #include "iconv-p.h" -size_t yaz_init_UTF8(yaz_iconv_t cd, unsigned char *inp, - size_t inbytesleft, size_t *no_read) +static size_t init_utf8(yaz_iconv_t cd, yaz_iconv_decoder_t d, + unsigned char *inp, + size_t inbytesleft, size_t *no_read) { - if (inp[0] != 0xef) + if (!inp || inp[0] != 0xef) { *no_read = 0; return 0; @@ -136,8 +136,9 @@ unsigned long yaz_read_UTF8_char(unsigned char *inp, return x; } -unsigned long yaz_read_UTF8(yaz_iconv_t cd, unsigned char *inp, - size_t inbytesleft, size_t *no_read) +static unsigned long read_utf8(yaz_iconv_t cd, yaz_iconv_decoder_t d, + unsigned char *inp, + size_t inbytesleft, size_t *no_read) { int err = 0; int r = yaz_read_UTF8_char(inp, inbytesleft, no_read, &err); @@ -228,6 +229,18 @@ yaz_iconv_encoder_t yaz_utf8_encoder(const char *tocode, return 0; } +yaz_iconv_decoder_t yaz_utf8_decoder(const char *fromcode, + yaz_iconv_decoder_t d) +{ + if (!yaz_matchstr(fromcode, "UTF8")) + { + d->init_handle = init_utf8; + d->read_handle = read_utf8; + return d; + } + return 0; +} + /* * Local variables: