X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=zoom%2Fzoom-c.c;h=27ae6f971557b580da4a36f8cd1cd5707b970f8a;hb=5f20d0ca24f3ab6ff9cc5c1532760782387d038e;hp=647774f9c4bb1cde2bdba0def1d73d468b1de7c1;hpb=1cd88a77abb7c32e5ff938e2f4b9392d03d45ec5;p=yaz-moved-to-github.git diff --git a/zoom/zoom-c.c b/zoom/zoom-c.c index 647774f..27ae6f9 100644 --- a/zoom/zoom-c.c +++ b/zoom/zoom-c.c @@ -1,5 +1,5 @@ /* - * $Id: zoom-c.c,v 1.29 2002-05-18 09:52:37 oleg Exp $ + * $Id: zoom-c.c,v 1.32 2002-05-21 19:39:57 adam Exp $ * * ZOOM layer for C, connections, result sets, queries. */ @@ -729,16 +729,15 @@ static int ZOOM_connection_send_init (ZOOM_connection c) yaz_oi_APDU(apdu, &oi); - if (oi_unit = yaz_oi_update(oi, c->odr_out, NULL, 0, 0)) + if ((oi_unit = yaz_oi_update(oi, c->odr_out, NULL, 0, 0))) { ODR_MASK_SET(ireq->options, Z_Options_negotiationModel); oi_unit->which = Z_OtherInfo_externallyDefinedInfo; oi_unit->information.externallyDefinedInfo = - yaz_set_charset_and_lang(c->odr_out, - CLASS_NEGOT, VAL_CHARNEG3, + yaz_set_proposal_charneg(c->odr_out, (const char **)&c->charset, (c->charset) ? 1:0, - (const char **)&c->lang, (c->lang) ? 1:0); + (const char **)&c->lang, (c->lang) ? 1:0, 1); } } assert (apdu); @@ -1624,6 +1623,24 @@ static void handle_apdu (ZOOM_connection c, Z_APDU *apdu) } ZOOM_connection_exec_task (c); } + if (ODR_MASK_GET(initrs->options, Z_Options_negotiationModel)) + { + NMEM tmpmem = nmem_create(); + Z_CharSetandLanguageNegotiation *p = + yaz_get_charneg_record(initrs->otherInfo); + + if (p) + { + char *charset=NULL, *lang=NULL; + int selected; + + yaz_get_response_charneg(tmpmem, p, &charset, &lang, &selected); + yaz_log(LOG_DEBUG, "Target accepted: charset - %s, language - %s, select - %d", + charset, lang, selected); + + nmem_destroy(tmpmem); + } + } break; case Z_APDU_searchResponse: handle_search_response (c, apdu->u.searchResponse);