Lines Matching refs:ctx

127 static idn_result_t	parse_conf(idn_resconf_t ctx, FILE *fp);
128 static idn_result_t parse_idn_encoding(idn_resconf_t ctx, char *args,
130 static idn_result_t parse_local_map(idn_resconf_t ctx, char *args,
132 static idn_result_t parse_nameprep(idn_resconf_t ctx, char *args,
135 static void resetconf(idn_resconf_t ctx);
137 static idn_result_t update_local_converter(idn_resconf_t ctx);
139 static idn_result_t setdefaults_body(idn_resconf_t ctx, int conf_mask);
175 idn_resconf_t ctx = NULL;
186 if ((ctx = malloc(sizeof(*ctx))) == NULL) {
191 ctx->local_converter_is_static = 0;
192 ctx->local_converter = NULL;
193 ctx->idn_converter = NULL;
194 ctx->aux_idn_converter = NULL;
195 ctx->normalizer = NULL;
196 ctx->prohibit_checker = NULL;
197 ctx->unassigned_checker = NULL;
198 ctx->bidi_checker = NULL;
199 ctx->mapper = NULL;
200 ctx->local_mapper = NULL;
201 ctx->reference_count = 1;
203 r = idn_delimitermap_create(&ctx->delimiter_mapper);
207 *ctxp = ctx;
326 idn_resconf_loadfile(idn_resconf_t ctx, const char *file) {
330 assert(ctx != NULL);
335 resetconf(ctx);
336 r = idn_delimitermap_create(&ctx->delimiter_mapper);
344 r = setdefaults_body(ctx, 0);
359 r = parse_conf(ctx, fp);
368 idn_resconf_destroy(idn_resconf_t ctx) {
369 assert(ctx != NULL);
373 ctx->reference_count--;
374 if (ctx->reference_count <= 0) {
375 resetconf(ctx);
376 free(ctx);
381 ctx->reference_count + 1, ctx->reference_count));
386 idn_resconf_incrref(idn_resconf_t ctx) {
387 assert(ctx != NULL);
391 ctx->reference_count, ctx->reference_count + 1));
393 ctx->reference_count++;
397 idn_resconf_getalternateconverter(idn_resconf_t ctx) {
398 assert(ctx != NULL);
402 return (idn_resconf_getidnconverter(ctx));
406 idn_resconf_getdelimitermap(idn_resconf_t ctx) {
407 assert(ctx != NULL);
411 if (ctx->delimiter_mapper != NULL)
412 idn_delimitermap_incrref(ctx->delimiter_mapper);
413 return (ctx->delimiter_mapper);
417 idn_resconf_getidnconverter(idn_resconf_t ctx) {
418 assert(ctx != NULL);
422 if (ctx->idn_converter != NULL)
423 idn_converter_incrref(ctx->idn_converter);
424 return (ctx->idn_converter);
428 idn_resconf_getauxidnconverter(idn_resconf_t ctx) {
429 assert(ctx != NULL);
433 if (ctx->aux_idn_converter != NULL)
434 idn_converter_incrref(ctx->aux_idn_converter);
435 return (ctx->aux_idn_converter);
439 idn_resconf_getlocalconverter(idn_resconf_t ctx) {
440 assert(ctx != NULL);
448 if (update_local_converter(ctx) != idn_success)
451 idn_converter_incrref(ctx->local_converter);
452 return (ctx->local_converter);
458 idn_resconf_getlocalmapselector(idn_resconf_t ctx) {
459 assert(ctx != NULL);
463 if (ctx->local_mapper != NULL)
464 idn_mapselector_incrref(ctx->local_mapper);
465 return (ctx->local_mapper);
469 idn_resconf_getmapper(idn_resconf_t ctx) {
470 assert(ctx != NULL);
474 if (ctx->mapper != NULL)
475 idn_mapper_incrref(ctx->mapper);
476 return (ctx->mapper);
480 idn_resconf_getnormalizer(idn_resconf_t ctx) {
481 assert(ctx != NULL);
485 if (ctx->normalizer != NULL)
486 idn_normalizer_incrref(ctx->normalizer);
487 return (ctx->normalizer);
491 idn_resconf_getprohibitchecker(idn_resconf_t ctx) {
492 assert(ctx != NULL);
496 if (ctx->prohibit_checker != NULL)
497 idn_checker_incrref(ctx->prohibit_checker);
498 return (ctx->prohibit_checker);
502 idn_resconf_getunassignedchecker(idn_resconf_t ctx) {
503 assert(ctx != NULL);
507 if (ctx->unassigned_checker != NULL)
508 idn_checker_incrref(ctx->unassigned_checker);
509 return (ctx->unassigned_checker);
513 idn_resconf_getbidichecker(idn_resconf_t ctx) {
514 assert(ctx != NULL);
518 if (ctx->bidi_checker != NULL)
519 idn_checker_incrref(ctx->bidi_checker);
520 return (ctx->bidi_checker);
524 idn_resconf_setalternateconverter(idn_resconf_t ctx,
526 assert(ctx != NULL);
532 idn_resconf_setdelimitermap(idn_resconf_t ctx,
534 assert(ctx != NULL);
538 if (ctx->delimiter_mapper != NULL)
539 idn_delimitermap_destroy(ctx->delimiter_mapper);
540 ctx->delimiter_mapper = delimiter_mapper;
542 idn_delimitermap_incrref(ctx->delimiter_mapper);
546 idn_resconf_setidnconverter(idn_resconf_t ctx,
548 assert(ctx != NULL);
552 if (ctx->idn_converter != NULL)
553 idn_converter_destroy(ctx->idn_converter);
554 ctx->idn_converter = idn_converter;
556 idn_converter_incrref(ctx->idn_converter);
560 idn_resconf_setauxidnconverter(idn_resconf_t ctx,
562 assert(ctx != NULL);
566 if (ctx->aux_idn_converter != NULL)
567 idn_converter_destroy(ctx->aux_idn_converter);
568 ctx->aux_idn_converter = aux_idn_converter;
570 idn_converter_incrref(ctx->aux_idn_converter);
574 idn_resconf_setlocalconverter(idn_resconf_t ctx,
577 assert(ctx != NULL);
581 if (ctx->local_converter != NULL) {
582 idn_converter_destroy(ctx->local_converter);
583 ctx->local_converter = NULL;
587 ctx->local_converter_is_static = 0;
589 ctx->local_converter = local_converter;
591 ctx->local_converter_is_static = 1;
597 idn_resconf_setlocalmapselector(idn_resconf_t ctx,
599 assert(ctx != NULL);
603 if (ctx->local_mapper != NULL)
604 idn_mapselector_destroy(ctx->local_mapper);
605 ctx->local_mapper = local_mapper;
607 idn_mapselector_incrref(ctx->local_mapper);
611 idn_resconf_setmapper(idn_resconf_t ctx, idn_mapper_t mapper) {
612 assert(ctx != NULL);
616 if (ctx->mapper != NULL)
617 idn_mapper_destroy(ctx->mapper);
618 ctx->mapper = mapper;
620 idn_mapper_incrref(ctx->mapper);
624 idn_resconf_setnormalizer(idn_resconf_t ctx, idn_normalizer_t normalizer) {
625 assert(ctx != NULL);
629 if (ctx->normalizer != NULL)
630 idn_normalizer_destroy(ctx->normalizer);
631 ctx->normalizer = normalizer;
633 idn_normalizer_incrref(ctx->normalizer);
637 idn_resconf_setprohibitchecker(idn_resconf_t ctx,
639 assert(ctx != NULL);
643 if (ctx->prohibit_checker != NULL)
644 idn_checker_destroy(ctx->prohibit_checker);
645 ctx->prohibit_checker = prohibit_checker;
647 idn_checker_incrref(ctx->prohibit_checker);
651 idn_resconf_setunassignedchecker(idn_resconf_t ctx,
653 assert(ctx != NULL);
657 if (ctx->unassigned_checker != NULL)
658 idn_checker_destroy(ctx->unassigned_checker);
659 ctx->unassigned_checker = unassigned_checker;
661 idn_checker_incrref(ctx->unassigned_checker);
665 idn_resconf_setbidichecker(idn_resconf_t ctx,
667 assert(ctx != NULL);
671 if (ctx->bidi_checker != NULL)
672 idn_checker_destroy(ctx->bidi_checker);
673 ctx->bidi_checker = bidi_checker;
675 idn_checker_incrref(ctx->bidi_checker);
679 idn_resconf_setnameprepversion(idn_resconf_t ctx, const char *version)
691 assert(ctx != NULL && version != NULL);
760 idn_resconf_setmapper(ctx, mapper);
761 idn_resconf_setnormalizer(ctx, normalizer);
762 idn_resconf_setprohibitchecker(ctx, prohibit_checker);
763 idn_resconf_setunassignedchecker(ctx, unassigned_checker);
764 idn_resconf_setbidichecker(ctx, bidi_checker);
793 idn_resconf_setalternateconvertername(idn_resconf_t ctx, const char *name,
795 assert(ctx != NULL && name != NULL);
804 idn_resconf_setidnconvertername(idn_resconf_t ctx, const char *name,
809 assert(ctx != NULL && name != NULL);
818 if (ctx->idn_converter != NULL)
819 idn_converter_destroy(ctx->idn_converter);
820 ctx->idn_converter = idn_converter;
826 idn_resconf_setauxidnconvertername(idn_resconf_t ctx, const char *name,
832 assert(ctx != NULL && name != NULL);
837 if (ctx->aux_idn_converter != NULL) {
838 old_name = idn_converter_localencoding(ctx->aux_idn_converter);
847 if (ctx->aux_idn_converter != NULL)
848 idn_converter_destroy(ctx->aux_idn_converter);
849 ctx->aux_idn_converter = aux_idn_converter;
855 idn_resconf_setlocalconvertername(idn_resconf_t ctx, const char *name,
864 assert(ctx != NULL);
869 if (ctx->local_converter != NULL) {
870 idn_converter_destroy(ctx->local_converter);
871 ctx->local_converter = NULL;
873 ctx->local_converter_is_static = 0;
879 ctx->local_converter = local_converter;
880 ctx->local_converter_is_static = 1;
889 idn_resconf_addalldelimitermapucs(idn_resconf_t ctx, unsigned long *v,
895 if (ctx->delimiter_mapper == NULL) {
896 r = idn_delimitermap_create(&(ctx->delimiter_mapper));
901 r = idn_delimitermap_addall(ctx->delimiter_mapper, v, nv);
906 idn_resconf_addalllocalmapselectornames(idn_resconf_t ctx, const char *tld,
910 assert(ctx != NULL && names != NULL && tld != NULL);
915 if (ctx->local_mapper == NULL) {
916 r = idn_mapselector_create(&(ctx->local_mapper));
921 r = idn_mapselector_addall(ctx->local_mapper, tld, names, nnames);
926 idn_resconf_addallmappernames(idn_resconf_t ctx, const char **names,
930 assert(ctx != NULL && names != NULL);
934 if (ctx->mapper == NULL) {
935 r = idn_mapper_create(&(ctx->mapper));
940 r = idn_mapper_addall(ctx->mapper, names, nnames);
945 idn_resconf_addallnormalizernames(idn_resconf_t ctx, const char **names,
949 assert(ctx != NULL && names != NULL);
953 if (ctx->normalizer == NULL) {
954 r = idn_normalizer_create(&(ctx->normalizer));
959 r = idn_normalizer_addall(ctx->normalizer, names, nnames);
964 idn_resconf_addallprohibitcheckernames(idn_resconf_t ctx, const char **names,
970 assert(ctx != NULL && names != NULL);
974 if (ctx->prohibit_checker == NULL) {
975 r = idn_checker_create(&(ctx->prohibit_checker));
988 r = idn_checker_add(ctx->prohibit_checker, long_name);
997 idn_resconf_addallunassignedcheckernames(idn_resconf_t ctx, const char **names,
1003 assert(ctx != NULL && names != NULL);
1008 if (ctx->unassigned_checker == NULL) {
1009 r = idn_checker_create(&(ctx->unassigned_checker));
1022 r = idn_checker_add(ctx->unassigned_checker, long_name);
1031 idn_resconf_addallbidicheckernames(idn_resconf_t ctx, const char **names,
1037 assert(ctx != NULL && names != NULL);
1041 if (ctx->bidi_checker == NULL) {
1042 r = idn_checker_create(&(ctx->bidi_checker));
1055 r = idn_checker_add(ctx->bidi_checker, long_name);
1064 parse_conf(idn_resconf_t ctx, FILE *fp) {
1110 r = parse_idn_encoding(ctx, argv[1], lineno);
1113 r = parse_local_map(ctx, argv[1], lineno);
1122 r = parse_nameprep(ctx, argv[1], lineno);
1149 return setdefaults_body(ctx, conf_mask);
1156 parse_idn_encoding(idn_resconf_t ctx, char *args, int lineno) {
1169 r = idn_converter_create(argv[0], &ctx->idn_converter,
1181 parse_local_map(idn_resconf_t ctx, char *args, int lineno) {
1195 if (ctx->local_mapper == NULL) {
1196 r = idn_mapselector_create(&ctx->local_mapper);
1205 r = idn_mapselector_add(ctx->local_mapper, argv[0], argv[i]);
1220 parse_nameprep(idn_resconf_t ctx, char *args, int lineno) {
1237 r = idn_mapper_create(&ctx->mapper);
1244 r = idn_mapper_add(ctx->mapper, argv[0]);
1256 r = idn_normalizer_create(&ctx->normalizer);
1263 r = idn_normalizer_add(ctx->normalizer, argv[0]);
1275 r = idn_checker_create(&ctx->prohibit_checker);
1283 r = idn_checker_add(ctx->prohibit_checker, scheme_name);
1295 r = idn_checker_create(&ctx->unassigned_checker);
1303 r = idn_checker_add(ctx->unassigned_checker, scheme_name);
1315 r = idn_checker_create(&ctx->bidi_checker);
1323 r = idn_checker_add(ctx->bidi_checker, scheme_name);
1369 resetconf(idn_resconf_t ctx) {
1371 idn_resconf_setlocalconverter(ctx, NULL);
1373 idn_resconf_setidnconverter(ctx, NULL);
1374 idn_resconf_setauxidnconverter(ctx, NULL);
1375 idn_resconf_setdelimitermap(ctx, NULL);
1376 idn_resconf_setlocalmapselector(ctx, NULL);
1377 idn_resconf_setmapper(ctx, NULL);
1378 idn_resconf_setnormalizer(ctx, NULL);
1379 idn_resconf_setprohibitchecker(ctx, NULL);
1380 idn_resconf_setunassignedchecker(ctx, NULL);
1381 idn_resconf_setbidichecker(ctx, NULL);
1386 update_local_converter(idn_resconf_t ctx) {
1396 if (ctx->local_converter_is_static)
1402 old_encoding = (ctx->local_converter != NULL) ?
1403 idn_converter_localencoding(ctx->local_converter) :
1417 if (ctx->local_converter != NULL) {
1418 idn_converter_destroy(ctx->local_converter);
1419 ctx->local_converter = NULL;
1423 &ctx->local_converter,
1430 idn_resconf_setdefaults(idn_resconf_t ctx)
1434 assert(ctx != NULL);
1438 resetconf(ctx);
1439 r = idn_delimitermap_create(&ctx->delimiter_mapper);
1446 return setdefaults_body(ctx, 0);
1450 setdefaults_body(idn_resconf_t ctx, int conf_mask) {
1454 assert(ctx != NULL);
1458 r = idn_resconf_setnameprepversion(ctx, IDN_NAMEPREP_CURRENT);
1466 &ctx->idn_converter,