📄 tsticonv.c
字号:
/* * Copyright (c) 2002-2003, Index Data * See the file LICENSE for details. * * $Id: tsticonv.c,v 1.5 2003/06/22 11:48:33 adam Exp $ */#if HAVE_CONFIG_H#include <config.h>#endif#include <errno.h>#include <string.h>#include <ctype.h>#include <yaz/yaz-util.h>/* some test strings in ISO-8859-1 format */const char *buf[] = { "ax" , "\330", "eneb\346r", "\xfc", "\xfb", "\xfbr", 0 };/* some test strings in MARC-8 format */const char *marc8_strings[] = { "ax", "\xa2", /* latin capital letter o with stroke */ "eneb\xb5r", /* latin small letter ae */ "\xe8\x75", /* latin small letter u with umlaut */ "\xe3\x75", /* latin small letter u with circumflex */ "\xe3\x75r", /* latin small letter u with circumflex */ 0};static void marc8_tst(){ int i; yaz_iconv_t cd; cd = yaz_iconv_open("ISO-8859-1", "MARC8"); for (i = 0; buf[i]; i++) { size_t r; char *inbuf= (char*) marc8_strings[i]; size_t inbytesleft = strlen(inbuf); char outbuf0[24]; char *outbuf = outbuf0; size_t outbytesleft = sizeof(outbuf0); r = yaz_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); if (r == (size_t) (-1)) { int e = yaz_iconv_error(cd); printf ("tsticonv 6 i=%d e=%d\n", i, e); exit(6); } if ((outbuf - outbuf0) != strlen(buf[i]) || memcmp(outbuf0, buf[i], strlen(buf[i]))) { printf ("tsticonv 7 i=%d\n", i); printf ("buf=%s out=%s\n", buf[i], outbuf0); exit(7); } } yaz_iconv_close(cd);}static void dconvert(int mandatory, const char *tmpcode){ int i; yaz_iconv_t cd; for (i = 0; buf[i]; i++) { size_t r; char *inbuf = (char*) buf[i]; size_t inbytesleft = strlen(inbuf); char outbuf0[24]; char outbuf1[10]; char *outbuf = outbuf0; size_t outbytesleft = sizeof(outbuf0); cd = yaz_iconv_open(tmpcode, "ISO-8859-1"); if (!cd) { if (!mandatory) return; printf ("tsticonv 1\n"); exit(1); } r = yaz_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); if (r == (size_t)(-1)) { int e = yaz_iconv_error(cd); printf ("tsticonv 2 e=%d\n", e); exit(2); } yaz_iconv_close(cd); cd = yaz_iconv_open("ISO-8859-1", tmpcode); if (!cd) { if (!mandatory) return; printf ("tsticonv 3\n"); exit(3); } inbuf = outbuf0; inbytesleft = sizeof(outbuf0) - outbytesleft; outbuf = outbuf1; outbytesleft = sizeof(outbuf1); r = yaz_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); if (r == (size_t)(-1)) { int e = yaz_iconv_error(cd); printf ("tsticonv 4 e=%d\n", e); exit(4); } if (strlen(buf[i]) == (sizeof(outbuf1) - outbytesleft) && memcmp(outbuf1, buf[i], strlen(buf[i]))) { printf ("tsticonv 5\n"); exit(5); } yaz_iconv_close(cd); }} int main (int argc, char **argv){ dconvert(1, "UTF-8"); dconvert(1, "ISO-8859-1"); dconvert(1, "UCS4"); dconvert(0, "CP865"); marc8_tst(); exit (0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -