1 /* This file is part of the YAZ toolkit.
2 * Copyright (C) 1995-2011 Index Data
3 * See the file LICENSE for details.
7 * \brief Danmarc2 character set decoding
20 #include <yaz/xmalloc.h>
27 static unsigned long read_danmarc(yaz_iconv_t cd,
28 yaz_iconv_decoder_t d,
30 size_t inbytesleft, size_t *no_read)
32 struct decoder_data *data = (struct decoder_data *) d->data;
33 unsigned long x = inp[0];
47 yaz_iconv_set_errno(cd, YAZ_ICONV_EINVAL);
55 case 0xa4: /* CURRENCY SIGN */
59 case 0xe5: /* LATIN SMALL LETTER A WITH RING ABOVE */
64 case 0xc5: /* LATIN CAPITAL LETTER A WITH RING ABOVE */
72 yaz_iconv_set_errno(cd, YAZ_ICONV_EINVAL);
79 sscanf((const char *) inp+1, "%4lx", &v);
91 static size_t init_danmarc(yaz_iconv_t cd, yaz_iconv_decoder_t d,
93 size_t inbytesleft, size_t *no_read)
95 struct decoder_data *data = (struct decoder_data *) d->data;
100 void destroy_danmarc(yaz_iconv_decoder_t d)
102 struct decoder_data *data = (struct decoder_data *) d->data;
106 yaz_iconv_decoder_t yaz_danmarc_decoder(const char *fromcode,
107 yaz_iconv_decoder_t d)
110 if (!yaz_matchstr(fromcode, "danmarc"))
112 struct decoder_data *data = (struct decoder_data *)
113 xmalloc(sizeof(*data));
116 d->read_handle = read_danmarc;
117 d->init_handle = init_danmarc;
118 d->destroy_handle = destroy_danmarc;
128 * c-file-style: "Stroustrup"
129 * indent-tabs-mode: nil
131 * vim: shiftwidth=4 tabstop=8 expandtab