コード例 #1
0
ファイル: api.c プロジェクト: DHTNS/bind9-9.7.0-P1.dfsg
idn_result_t
idn_nameinit(int load_file) {
	idn_result_t r;

	TRACE(("idn_nameinit()\n"));

	if (initialized) {
		r = idn_success;
		goto ret;
	}

	idn_resconf_initialize();

	r = idn_resconf_create(&default_conf);
	if (r != idn_success)
		goto ret;

	if (load_file)
		r = idn_resconf_loadfile(default_conf, conf_file);
	else
		r = idn_resconf_setdefaults(default_conf);
	if (r != idn_success)
		goto ret;

	initialized = 1;

ret:
	if (r != idn_success && default_conf != NULL) {
		idn_resconf_destroy(default_conf);
		default_conf = NULL;
	}
	TRACE(("idn_nameinit(): %s\n", idn_result_tostring(r)));
	return (r);
}
コード例 #2
0
ファイル: convert.c プロジェクト: w796933/bind99damp
idn_resconf_t
idnConvInit(void)
{
	char encoding[256];
	idn_resconf_t ctx;
	idn_result_t r;
    
	idnLogReset();

	idnLogPrintf(idn_log_level_info, "idnkit version: %-.20s\n",
		     idn_version_getstring());

	/*
	 * Initialize.
	 */
	if ((r = idn_resconf_initialize()) != idn_success) {
		idnPrintf("idnConvInit: cannot initialize idn library: %s\n",
			  idn_result_tostring(r));
		return NULL;
	}
	if ((r = idn_resconf_create(&ctx)) != idn_success) {
		idnPrintf("idnConvInit: cannot create context: %s\n",
			  idn_result_tostring(r));
		return NULL;
	}
	/*
	 * load configuration file.
	 */
	if ((r = idn_resconf_loadfile(ctx, NULL)) != idn_success) {
		idnPrintf("idnConvInit: cannot read configuration file: %s\n",
			  idn_result_tostring(r));
		if ((r = idn_resconf_setdefaults(ctx)) != idn_success) {
			idnPrintf("idnConvInit: setting default configuration"
				  " failed: %s\n",
				  idn_result_tostring(r));
			idnConvDone(ctx);
			return (NULL);
		}
		idnPrintf("idnConvInit: using default configuration\n");
	}
	/*
	 * Set local codeset.
	 */
	if (idnGetPrgEncoding(encoding, sizeof(encoding)) == TRUE) {
		idnPrintf("Encoding PRG <%-.100s>\n", encoding);
		r = idn_resconf_setlocalconvertername(ctx, encoding,
						      IDN_CONVERTER_RTCHECK);
		if (r != idn_success) {
			idnPrintf("idnConvInit: invalid local codeset "
				  "\"%-.100s\": %s\n",
				  encoding, idn_result_tostring(r));
			idnConvDone(ctx);
			return NULL;
		}
	}
	return ctx;
}
コード例 #3
0
ファイル: util.c プロジェクト: enukane/netbsd-src
void
load_conf_file(idn_resconf_t conf, const char *file) {
	idn_result_t r;

	if ((r = idn_resconf_loadfile(conf, file)) != idn_success) {
		errormsg("error reading configuration file: %s\n",
			 idn_result_tostring(r));
		exit(1);
	}
}
コード例 #4
0
ファイル: idncheck.c プロジェクト: openpeer/idnkit
static int
create_resconf(idn_resconf_t *resconf, int no_conf,
	       const char *conf_file, const char *localencoding,
	       const char *localcheck_file) {
	idn_result_t r;

	r = idn_resconf_create(resconf);
	if (r != idn_success) {
		errormsg("failed to initialize configuration "
			"contexts, %s\n", idn_result_tostring(r));
		return (0);
	}

	if (!no_conf) {
		r = idn_resconf_loadfile(*resconf, conf_file);
		if (r != idn_success &&
		    (r != idn_nofile || conf_file != NULL)) {
			errormsg("failed to read a configuration file, "
				"%s\n", idn_result_tostring(r));
			return (0);
		}
	}

	/*
	 * For backward compatibility to idnkit-1.0, 'Punycode' specified
	 * as local encoding, we assumes it as UTF-8.
	 */
	if (localencoding != NULL &&
	    strcmp(localencoding, IDN__PUNYCODE_ACENAME) == 0)
		localencoding = IDN__UTF8_ENCODINGNAME;
		
	r = idn_resconf_setlocalencoding(*resconf, localencoding);
	if (r != idn_success) {
		errormsg("failed to set the local encoding, %s\n",
			idn_result_tostring(r));
		return (0);
	}

	r = idn_resconf_setlocalcheckfile(*resconf, localcheck_file);
	if (r != idn_success) {
		errormsg("failed to set the localcheck file, %s\n",
			idn_result_tostring(r));
		return (0);
	}

	return (1);
}