+/* Delete negotiation from OtherInformation. Client&Server side */
+int yaz_del_charneg_record(Z_OtherInformation **p)
+{
+ int i;
+
+ if (!*p)
+ return 0;
+
+ for (i = 0; i < (*p)->num_elements; i++) {
+ Z_External *pext;
+ if (((*p)->list[i]->which == Z_OtherInfo_externallyDefinedInfo) &&
+ (pext = (*p)->list[i]->information.externallyDefinedInfo)) {
+
+ oident *ent = oid_getentbyoid(pext->direct_reference);
+
+ if (ent && ent->value == VAL_CHARNEG3
+ && ent->oclass == CLASS_NEGOT
+ && pext->which == Z_External_charSetandLanguageNegotiation)
+ {
+ --((*p)->num_elements);
+ if ((*p)->num_elements == 0)
+ *p = 0;
+ else
+ {
+ for(; i < (*p)->num_elements; i++)
+ (*p)->list[i] = (*p)->list[i+1];
+ }
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+