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 set_localcode(idn_resconf_t conf, const char *code) { idn_result_t r; r = idn_resconf_setlocalconvertername(conf, code, IDN_CONVERTER_RTCHECK); if (r != idn_success) { errormsg("cannot create converter for codeset %s: %s\n", code, idn_result_tostring(r)); exit(1); } }