-/* $Id: api.h,v 1.50 2007-05-09 07:42:46 adam Exp $
+/* $Id: api.h,v 1.51 2007-05-21 11:54:59 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
YAZ_EXPORT
void zebra_result(ZebraHandle zh, int *code, char **addinfo);
+
+/** \brief Returns character set encoding for session
+ \param zh zebra session handle.
+ \returns encoding name (e.g. "iso-8859-1")
+*/
+YAZ_EXPORT
+const char *zebra_get_encoding(ZebraHandle zh);
+
/** \brief Set limit before Zebra does approx hit count
\param zh session handle
\param approx_limit the limit
-/* $Id: zebraapi.c,v 1.255 2007-05-08 12:50:04 adam Exp $
+/* $Id: zebraapi.c,v 1.256 2007-05-21 11:54:59 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
const char *reg_path);
static void zebra_register_close(ZebraService zs, struct zebra_register *reg);
+const char *zebra_get_encoding(ZebraHandle zh)
+{
+ assert(zh && zh->session_res);
+ return res_get_def(zh->session_res, "encoding", "ISO-8859-1");
+}
+
ZebraHandle zebra_open(ZebraService zs, Res res)
{
ZebraHandle zh;
zh->break_handler_func = 0;
zh->break_handler_data = 0;
- default_encoding = res_get_def(zh->session_res, "encoding", "ISO-8859-1");
+ default_encoding = zebra_get_encoding(zh);
zh->iconv_to_utf8 =
yaz_iconv_open ("UTF-8", default_encoding);
-/* $Id: zebrasrv.c,v 1.15 2007-04-17 20:27:14 adam Exp $
+/* $Id: zebrasrv.c,v 1.16 2007-05-21 11:54:59 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
return r;
}
r->handle = zh;
+
+ q->query_charset = odr_strdup(q->stream, zebra_get_encoding(zh));
if (q->auth)
{
if (q->auth->which == Z_IdAuthentication_open)
r->errstring = user;
return r;
}
- if (q->charneg_request) /* characater set and langauge negotiation? */
+ if (q->charneg_request) /* characater set and language negotiation? */
{
char **charsets = 0;
int num_charsets;
int i;
NMEM nmem = nmem_create();
- yaz_log (YLOG_LOG, "character set and language negotiation");
-
- yaz_get_proposal_charneg (nmem, q->charneg_request,
- &charsets, &num_charsets,
- &langs, &num_langs, &selected);
+ yaz_get_proposal_charneg(nmem, q->charneg_request,
+ &charsets, &num_charsets,
+ &langs, &num_langs, &selected);
for (i = 0; i < num_charsets; i++)
{
} else {
right_name = charsets[i];
}
- if (odr_set_charset (q->decode, "UTF-8", right_name) == 0)
+ if (odr_set_charset(q->decode, "UTF-8", right_name) == 0)
{
- yaz_log (YLOG_LOG, "charset %d %s (proper name %s): OK", i,
- charsets[i], right_name);
- odr_set_charset (q->stream, right_name, "UTF-8");
+ yaz_log(YLOG_LOG, "charset %d %s (proper name %s): OK", i,
+ charsets[i], right_name);
+ odr_set_charset(q->stream, right_name, "UTF-8");
if (selected)
zebra_record_encoding(zh, right_name);
zebra_octet_term_encoding(zh, right_name);
q->charneg_response =
- yaz_set_response_charneg (q->stream, charsets[i],
- 0, selected);
+ yaz_set_response_charneg(q->stream, charsets[i],
+ 0, selected);
break;
} else {
- yaz_log (YLOG_LOG, "charset %d %s (proper name %s): unsupported", i,
- charsets[i], right_name);
+ yaz_log(YLOG_LOG, "charset %d %s (proper name %s): unsupported", i,
+ charsets[i], right_name);
}
}
nmem_destroy(nmem);