static Z_OriginProposal_0 *z_get_OriginProposal_0(ODR o, const char *charset) { int form = get_form(charset); Z_OriginProposal_0 *p0 = (Z_OriginProposal_0*)odr_malloc(o, sizeof(*p0)); memset(p0, 0, sizeof(*p0)); if (form > 0) { /* ISO 10646 (UNICODE) */ char oidname[20]; Z_Iso10646 *is = (Z_Iso10646 *) odr_malloc(o, sizeof(*is)); p0->which = Z_OriginProposal_0_iso10646; p0->u.iso10646 = is; is->collections = 0; sprintf(oidname, "1.0.10646.1.0.%d", form); is->encodingLevel = odr_getoidbystr(o, oidname); } else { /* private ones */ Z_PrivateCharacterSet *pc = (Z_PrivateCharacterSet *)odr_malloc(o, sizeof(*pc)); memset(pc, 0, sizeof(*pc)); p0->which = Z_OriginProposal_0_private; p0->u.zprivate = pc; pc->which = Z_PrivateCharacterSet_externallySpecified; pc->u.externallySpecified = z_ext_record2(o, charset); } return p0; }
/* used by yaz_set_response_charneg */ static Z_TargetResponse *z_get_TargetResponse(ODR o, const char *charset, const char *lang, int selected) { Z_TargetResponse *p = (Z_TargetResponse *) odr_malloc(o, sizeof(*p)); int form = get_form(charset); memset(p, 0, sizeof(*p)); if (form > 0) { char oidname[20]; Z_Iso10646 *is = (Z_Iso10646 *) odr_malloc (o, sizeof(*is)); p->which = Z_TargetResponse_iso10646; p->u.iso10646 = is; is->collections = 0; sprintf (oidname, "1.0.10646.1.0.%d", form); is->encodingLevel = odr_getoidbystr (o, oidname); } else { Z_PrivateCharacterSet *pc = (Z_PrivateCharacterSet *)odr_malloc(o, sizeof(*pc)); memset(pc, 0, sizeof(*pc)); p->which = Z_TargetResponse_private; p->u.zprivate = pc; pc->which = Z_PrivateCharacterSet_externallySpecified; pc->u.externallySpecified = z_ext_record2(o, charset); } p->recordsInSelectedCharSets = (bool_t *)odr_malloc(o, sizeof(bool_t)); *p->recordsInSelectedCharSets = (selected) ? 1:0; p->selectedLanguage = lang ? (char *)odr_strdup(o, lang) : 0; return p; }