- yaz_iconv_t cd = yaz_iconv_open("UTF-8", "MARC-8");
- WRBUF wrbuf = wrbuf_alloc();
-
- char outbuf[120];
- size_t inbytesleft = rlen;
- const char *inp = result;
- while (cd && inbytesleft)
- {
- size_t outbytesleft = sizeof(outbuf);
- char *outp = outbuf;
- size_t r;
-
- r = yaz_iconv (cd, (char**) &inp,
- &inbytesleft,
- &outp, &outbytesleft);
- if (r == (size_t) (-1))
- {
- int e = yaz_iconv_error(cd);
- if (e != YAZ_ICONV_E2BIG)
- {
- yaz_log(LOG_WARN, "conversion failure");
- break;
- }
- }
- wrbuf_write(wrbuf, outbuf, outp - outbuf);
- }
- if (cd)
- yaz_iconv_close(cd);
-