idn_result_t idn_normalizer_add(idn_normalizer_t ctx, const char *scheme_name) { idn_result_t r; void *v; normalize_scheme_t *scheme; assert(ctx != NULL && scheme_name != NULL); TRACE(("idn_normalizer_add(scheme_name=%s)\n", scheme_name)); assert(INITIALIZED); if (idn__strhash_get(scheme_hash, scheme_name, &v) != idn_success) { ERROR(("idn_normalizer_add(): invalid scheme \"%-.30s\"\n", scheme_name)); r = idn_invalid_name; goto ret; } scheme = v; assert(ctx->nschemes <= ctx->scheme_size); if (ctx->nschemes == ctx->scheme_size && (r = expand_schemes(ctx)) != idn_success) { goto ret; } ctx->schemes[ctx->nschemes++] = scheme; r = idn_success; ret: TRACE(("idn_normalizer_add(): %s\n", idn_result_tostring(r))); return (r); }
mdn_result_t mdn_normalizer_add(mdn_normalizer_t ctx, const char *scheme_name) { mdn_result_t r; void *v; normalize_scheme_t *scheme; assert(ctx != NULL && scheme_name != NULL); TRACE(("mdn_normalizer_add(scheme_name=%s)\n", scheme_name)); assert(INITIALIZED); if (mdn_strhash_get(scheme_hash, scheme_name, &v) != mdn_success) { WARNING(("mdn_normalizer_add: invalid scheme %s\n", scheme_name)); return (mdn_invalid_name); } scheme = v; assert(ctx->nschemes <= ctx->scheme_size); if (ctx->nschemes == ctx->scheme_size && (r = expand_schemes(ctx)) != mdn_success) { WARNING(("mdn_normalizer_add: malloc failed\n")); return (r); } ctx->schemes[ctx->nschemes++] = scheme; return (mdn_success); }