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

📄 converter.tsy

📁 bind 9.3结合mysql数据库
💻 TSY
📖 第 1 页 / 共 2 页
字号:
#ifndef lintstatic char *rcsid = "$Id: converter.tsy,v 1.1.1.1 2003/06/04 00:26:53 marka Exp $";#endif/* * Copyright (c) 2002 Japan Network Information Center. * All rights reserved. *   * By using this file, you agree to the terms and conditions set forth bellow. *  * 			LICENSE TERMS AND CONDITIONS  *  * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, * Chiyoda-ku, Tokyo 101-0047, Japan. *  * 1. Use, Modification and Redistribution (including distribution of any *    modified or derived work) in source and/or binary forms is permitted *    under this License Terms and Conditions. *  * 2. Redistribution of source code must retain the copyright notices as they *    appear in each source code file, this License Terms and Conditions. *  * 3. Redistribution in binary form must reproduce the Copyright Notice, *    this License Terms and Conditions, in the documentation and/or other *    materials provided with the distribution.  For the purposes of binary *    distribution the "Copyright Notice" refers to the following language: *    "Copyright (c) 2000-2002 Japan Network Information Center.  All rights reserved." *  * 4. The name of JPNIC may not be used to endorse or promote products *    derived from this Software without specific prior written approval of *    JPNIC. *  * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC *    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT *    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *    PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL JPNIC BE LIABLE *    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR *    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF *    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. */#include <stddef.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <idn/converter.h>#include <idn/log.h>#include "codeset.h"#include "testutil.h"#ifndef IDN_PUNYCODE_ENCODING_NAME#define IDN_PUNYCODE_ENCODING_NAME "Punycode"#endif#ifndef IDN_UTF8_ENCODING_NAME#define IDN_UTF8_ENCODING_NAME "UTF-8"		/* by IANA */#endif#ifndef EUCJP_ENCODING_NAME#define EUCJP_ENCODING_NAME	"eucJP"#endif#ifndef SJIS_ENCODING_NAME#define SJIS_ENCODING_NAME	"SJIS"#endif#define CONF_FILENAME	"testalias.conf"#define LINEBUF_SIZE	2001#define SIZEOFUCS4(x)	(sizeof(x) / sizeof(unsigned long))/* * U+1820: mongorian letter a */#define UCS4_INVALID_NAME_FOR_EUCJP	0x1820/* * A4AC: hiragana letter GA (in EUC-JP) */#define EUCJP_NAME	"\xa4\xac"#define EUCJP_NAME_SIZE	3/* * U+304C: hiragana letter GA */#define UCS4_NAME		0x304C/* * Conversion result of "U+304C" */#define PUNYCODE_NAME	"xn--v8j"#define PUNYCODE_NAME_SIZE	8#define BUF_SIZE	128idn_result_tidn_test_encode(idn_converter_t ctx, void *privdata,		const unsigned long *from, char *to, size_t tolen){	idn_result_t r;	if (tolen >= EUCJP_NAME_SIZE) {		strcpy(to, EUCJP_NAME);		r = idn_success;	} else {		r = idn_buffer_overflow;	}	return (r);}idn_result_tidn_test_decode(idn_converter_t ctx, void *privdata,		const char *from, unsigned long *to, size_t tolen){	idn_result_t r;	if (tolen >= 2) {		to[0] = UCS4_NAME;		to[1] = 0x0000;		r = idn_success;	} else {		r = idn_buffer_overflow;	}	return (r);}//--------------------------------------------------------------------// Setups and Teardowns.//--------------------------------------------------------------------//# SETUP//	group: noinit//--//	Do nothing{	idn_result_t r;}//# SETUP//	group: generic//--//	Initialize the module.{	idn_result_t r;	idn_converter_t ctx = NULL;	const char *name;	r = idn_converter_initialize();	ASSERT_RESULT(r, idn_success);	r = idn_converter_resetalias();	ASSERT_RESULT(r, idn_success);}//# SETUP//	group: localencoding//--//	Initialize the module and load alias file.{	idn_result_t r;	idn_converter_t ctx = NULL;	const char *name;	r = idn_converter_initialize();	ASSERT_RESULT(r, idn_success);	r = idn_converter_resetalias();	ASSERT_RESULT(r, idn_success);	create_conf_file(CONF_FILENAME, 0,			 "*.KOI8-R KOI8-R",			 "*.ISO_8859-1 ISO-8859-1",			 "*.ISO_8859-2 ISO-8859-1",			 "*.UTF-8 UTF-8",			 "ja_JP.EUC eucJP",			 "japanese eucJP",			 NULL);	r = idn_converter_aliasfile(CONF_FILENAME);	ASSERT_RESULT(r, idn_success);}//# TEARDOWN//	group: localencoding//--//	reset alias information.{	idn_converter_resetalias();}//# SETUP//	group: conversion//--//	Initialize the module and create contexts.{	idn_result_t r;	idn_converter_t punycode_ctx = NULL;	idn_converter_t utf8_ctx = NULL;#ifndef WITHOUT_ICONV	idn_converter_t eucjp_ctx = NULL;#endif	r = idn_converter_initialize();	ASSERT_RESULT(r, idn_success);	r = idn_converter_create(IDN_PUNYCODE_ENCODING_NAME, &punycode_ctx,				 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_create(IDN_UTF8_ENCODING_NAME, &utf8_ctx,				 IDN_CONVERTER_DELAYEDOPEN);	ASSERT_RESULT(r, idn_success);#ifndef WITHOUT_ICONV	r = idn_converter_create(EUCJP_ENCODING_NAME, &eucjp_ctx,				 IDN_CONVERTER_DELAYEDOPEN);	ASSERT_RESULT(r, idn_success);#endif}//# TEARDOWN//	group: conversion//--//	Destroy contexts.{	if (punycode_ctx != NULL) {		idn_converter_destroy(punycode_ctx);	}	if (utf8_ctx != NULL) {		idn_converter_destroy(utf8_ctx);	}#ifndef WITHOUT_ICONV	if (eucjp_ctx != NULL) {		idn_converter_destroy(eucjp_ctx);	}#endif}//# SETUP//	group: quiet//--//	Set log level to `fatal' to supress log messages.{	int saved_log_level;	saved_log_level = idn_log_getlevel();	idn_log_setlevel(idn_log_level_fatal);}//# TEARDOWN//	group: quiet//--//	Restore log level.{	idn_log_setlevel(saved_log_level);}//--------------------------------------------------------------------// Testcases.//--------------------------------------------------------------------//# TESTCASE//	title: idn_converter_addalias() test - without initialization//	group: noinit quiet{	r = idn_converter_addalias("a", "b", 0);	ASSERT_RESULT(r, idn_failure);}//# TESTCASE//	title: idn_converter_aliasfile() - without initialization//	group: noinit quiet{	r = idn_converter_aliasfile("a");	ASSERT_RESULT(r, idn_failure);}//# TESTCASE//	title: idn_converter_resetalias() - without initialization//	group: noinit quiet{	r = idn_converter_resetalias();	ASSERT_RESULT(r, idn_failure);}//# TESTCASE//	title: idn_converter_getrealname() - without initialization//	group: noinit quiet{	const char *name;	name = idn_converter_getrealname("test");	ASSERT_STRING(name, "test");}//# TESTCASE//	title: idn_converter_create()//	group: generic quiet{#ifdef WITHOUT_ICONV	r = idn_converter_addalias("*pc", "Punycode", 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("*ej", EUCJP_ENCODING_NAME, 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("*sj", SJIS_ENCODING_NAME, 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_create("abcsj", &ctx, 0);	ASSERT_RESULT(r, idn_invalid_name);	r = idn_converter_create("notresolved", &ctx, 0);	ASSERT_RESULT(r, idn_invalid_name);	r = idn_converter_create("notresolved", &ctx,				 IDN_CONVERTER_DELAYEDOPEN);	ASSERT_RESULT(r, idn_invalid_name);#else	r = idn_converter_addalias("*pc", IDN_PUNYCODE_ENCODING_NAME, 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("*ej", EUCJP_ENCODING_NAME, 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("*sj", SJIS_ENCODING_NAME, 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_create("abcsj", &ctx, 0);	ASSERT_RESULT(r, idn_success);	idn_converter_destroy(ctx);	r = idn_converter_create("notresolved", &ctx, 0);	ASSERT_RESULT(r, idn_invalid_name);	r = idn_converter_create("notresolved", &ctx,				 IDN_CONVERTER_DELAYEDOPEN);	ASSERT_RESULT(r, idn_success);    {	    unsigned long ucs4_to[BUF_SIZE];	    r = idn_converter_convtoucs4(ctx, "a", ucs4_to, BUF_SIZE);	    ASSERT_RESULT(r, idn_invalid_name);	    idn_converter_destroy(ctx);    }#endif /* WITHOUT_ICONV */}//# TESTCASE//	title: idn_converter_addalias() - #1//	group: generic{	r = idn_converter_addalias("test", "result-a", 0);	ASSERT_RESULT(r, idn_success);	name = idn_converter_getrealname("test");	ASSERT_STRING(name, "result-a");}//# TESTCASE//	title: idn_converter_addalias() - #2//	group: generic{	r = idn_converter_addalias("test", "result-b", 1);	ASSERT_RESULT(r, idn_success);	name = idn_converter_getrealname("test");	ASSERT_STRING(name, "result-b");}//# TESTCASE//	title: idn_converter_addalias() - #3//	group: generic{	r = idn_converter_addalias("test", "result-a", 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("test", "result-b", 0);	ASSERT_RESULT(r, idn_success);	name = idn_converter_getrealname("test");	ASSERT_STRING(name, "result-a");}//# TESTCASE//	title: idn_converter_addalias() - #4//	group: generic{	r = idn_converter_addalias("test", "result-a", 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("test", "result-b", 1);	ASSERT_RESULT(r, idn_success);	name = idn_converter_getrealname("test");	ASSERT_STRING(name, "result-b");}//# TESTCASE//	title: idn_converter_addalias() - #5//	group: generic{	r = idn_converter_addalias("test", "result-a", 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("test", "result-b", 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("test", "result-c", 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("test", "result-d", 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("test", "result-e", 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("test", "result-f", 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("test", "result-g", 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("test", "result-h", 0);	ASSERT_RESULT(r, idn_success);	r = idn_converter_addalias("test", "result-i", 0);	ASSERT_RESULT(r, idn_success);	name = idn_converter_getrealname("test");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -