490{
491 Z_OtherInformation **p = &req->otherInfo;
492 Z_OtherInformationUnit *oi;
493
494 if (*p)
495 {
496 int i;
497 for (i = 0; i < (*p)->num_elements; i++)
498 {
499 Z_External *ext = (*p)->list[i]->information.externallyDefinedInfo;
500 if ((*p)->list[i]->which == Z_OtherInfo_externallyDefinedInfo
501 && ext &&
502 ext->which == Z_External_charSetandLanguageNegotiation)
503 return;
504 }
505 }
506 if ((oi = yaz_oi_update(p, odr, 0, 0, 0)))
507 {
508 ODR_MASK_SET(req->options, Z_Options_negotiationModel);
509 oi->which = Z_OtherInfo_externallyDefinedInfo;
510 oi->information.externallyDefinedInfo =
511 yaz_set_proposal_charneg_list(odr, ",",
512 charset,
513 0 ,
514 1 );
515 }
516}