⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsticonv.c

📁 harvest是一个下载html网页得机器人
💻 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 + -