X-Git-Url: http://git.indexdata.com/?p=yazproxy-moved-to-github.git;a=blobdiff_plain;f=src%2Fcharset-converter.cpp;h=6eb31c96310ec11505c1aa9007e6135bc481a747;hp=5bb4e030003fc9a3615c2403dec60b8bbc4b6475;hb=7fa984c171c65d05d34775c4533808793b2109cb;hpb=2faeba3f61ac423a9c71222e9a15377724d8f0fa diff --git a/src/charset-converter.cpp b/src/charset-converter.cpp index 5bb4e03..6eb31c9 100644 --- a/src/charset-converter.cpp +++ b/src/charset-converter.cpp @@ -1,7 +1,5 @@ -/* $Id: charset-converter.cpp,v 1.3 2005-05-18 20:15:22 adam Exp $ - Copyright (c) 1998-2005, Index Data. - -This file is part of the yaz-proxy. +/* This file is part of YAZ proxy + Copyright (C) 1998-2009 Index Data YAZ proxy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -14,10 +12,9 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with YAZ proxy; see the file LICENSE. If not, write to the -Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. - */ +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ #include #include @@ -33,7 +30,7 @@ Yaz_CharsetConverter::Yaz_CharsetConverter() Yaz_CharsetConverter::~Yaz_CharsetConverter() { - wrbuf_free(m_wrbuf, 1); + wrbuf_destroy(m_wrbuf); xfree(m_target_query_charset); xfree(m_client_query_charset); } @@ -48,7 +45,7 @@ void Yaz_CharsetConverter::set_target_query_charset(const char *s) xfree(m_target_query_charset); m_target_query_charset = 0; if (s) - m_target_query_charset = xstrdup(s); + m_target_query_charset = xstrdup(s); } void Yaz_CharsetConverter::set_client_query_charset(const char *s) @@ -56,7 +53,7 @@ void Yaz_CharsetConverter::set_client_query_charset(const char *s) xfree(m_client_query_charset); m_client_query_charset = 0; if (s) - m_client_query_charset = xstrdup(s); + m_client_query_charset = xstrdup(s); } const char *Yaz_CharsetConverter::get_client_query_charset() @@ -75,22 +72,23 @@ int Yaz_CharsetConverter::get_client_charset_selected() } void Yaz_CharsetConverter::convert_type_1(char *buf_in, int len_in, - char **buf_out, int *len_out, - ODR o) + char **buf_out, int *len_out, + ODR o) { wrbuf_rewind(m_wrbuf); wrbuf_iconv_write(m_wrbuf, m_ct, buf_in, len_in); + wrbuf_iconv_reset(m_wrbuf, m_ct); *len_out = wrbuf_len(m_wrbuf); if (*len_out == 0) { // we assume conversion failed - *buf_out = buf_in; - *len_out = len_in; + *buf_out = buf_in; + *len_out = len_in; } else { - *buf_out = (char*) odr_malloc(o, *len_out); - memcpy(*buf_out, wrbuf_buf(m_wrbuf), *len_out); + *buf_out = (char*) odr_malloc(o, *len_out); + memcpy(*buf_out, wrbuf_buf(m_wrbuf), *len_out); } } @@ -99,9 +97,9 @@ void Yaz_CharsetConverter::convert_type_1(Z_Term *q, ODR o) switch(q->which) { case Z_Term_general: - convert_type_1((char *) q->u.general->buf, q->u.general->len, - (char **) &q->u.general->buf, &q->u.general->len, o); - break; + convert_type_1((char *) q->u.general->buf, q->u.general->len, + (char **) &q->u.general->buf, &q->u.general->len, o); + break; } } @@ -110,12 +108,12 @@ void Yaz_CharsetConverter::convert_type_1(Z_Operand *q, ODR o) switch(q->which) { case Z_Operand_APT: - convert_type_1(q->u.attributesPlusTerm->term, o); - break; + convert_type_1(q->u.attributesPlusTerm->term, o); + break; case Z_Operand_resultSetId: - break; + break; case Z_Operand_resultAttr: - break; + break; } } @@ -124,12 +122,12 @@ void Yaz_CharsetConverter::convert_type_1(Z_RPNStructure *q, ODR o) switch(q->which) { case Z_RPNStructure_simple: - convert_type_1(q->u.simple, o); - break; + convert_type_1(q->u.simple, o); + break; case Z_RPNStructure_complex: - convert_type_1(q->u.complex->s1, o); - convert_type_1(q->u.complex->s2, o); - break; + convert_type_1(q->u.complex->s1, o); + convert_type_1(q->u.complex->s2, o); + break; } } @@ -137,12 +135,21 @@ void Yaz_CharsetConverter::convert_type_1(Z_RPNQuery *q, ODR o) { if (m_target_query_charset && m_client_query_charset) { - m_ct = yaz_iconv_open(m_target_query_charset, - m_client_query_charset); - if (m_ct) - { - convert_type_1(q->RPNStructure, o); - yaz_iconv_close(m_ct); - } + m_ct = yaz_iconv_open(m_target_query_charset, + m_client_query_charset); + if (m_ct) + { + convert_type_1(q->RPNStructure, o); + yaz_iconv_close(m_ct); + } } } +/* + * Local variables: + * c-basic-offset: 4 + * c-file-style: "Stroustrup" + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +