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); }
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; }
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); } }
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); }