X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Ficu_I18N.c;h=b2119b6804cf7ebeb5e999a2958d4e947fe2fb48;hp=7809d2ddde383d0b1770165c1f19fa9837401e7c;hb=68398183c3b25120b484681482f461a1da4c6a36;hpb=ecd6d03e10dfbe4b6bb5b1b599c23bdb7ff305ca diff --git a/src/icu_I18N.c b/src/icu_I18N.c index 7809d2d..b2119b6 100644 --- a/src/icu_I18N.c +++ b/src/icu_I18N.c @@ -1,8 +1,11 @@ -/* - * Copyright (C) 1995-2007, Index Data ApS +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2008 Index Data * See the file LICENSE for details. - * - * $Id: icu_I18N.c,v 1.20 2007-11-12 11:11:16 adam Exp $ + */ + +/** + * \file icu_I18N.c + * \brief ICU utilities */ #if HAVE_CONFIG_H @@ -166,8 +169,7 @@ struct icu_buf_utf8 * icu_buf_utf8_resize(struct icu_buf_utf8 * buf8, else buf8->utf8 = (uint8_t *) xrealloc(buf8->utf8, sizeof(uint8_t) * capacity); - - icu_buf_utf8_clear(buf8); + buf8->utf8_cap = capacity; } else { @@ -181,23 +183,6 @@ struct icu_buf_utf8 * icu_buf_utf8_resize(struct icu_buf_utf8 * buf8, } -struct icu_buf_utf8 * icu_buf_utf8_copy(struct icu_buf_utf8 * dest8, - struct icu_buf_utf8 * src8) -{ - if(!dest8 || !src8 - || dest8 == src8) - return 0; - - - if (dest8->utf8_cap < src8->utf8_len) - icu_buf_utf8_resize(dest8, src8->utf8_len * 2); - - strncpy((char*) dest8->utf8, (char*) src8->utf8, src8->utf8_len); - - return dest8; -} - - const char *icu_buf_utf8_to_cstr(struct icu_buf_utf8 *src8) { if (!src8 || src8->utf8_len == 0) @@ -465,10 +450,10 @@ int icu_utf16_casemap(struct icu_buf_utf16 * dest16, -UErrorCode icu_sortkey8_from_utf16(UCollator *coll, - struct icu_buf_utf8 * dest8, - struct icu_buf_utf16 * src16, - UErrorCode * status) +void icu_sortkey8_from_utf16(UCollator *coll, + struct icu_buf_utf8 * dest8, + struct icu_buf_utf16 * src16, + UErrorCode * status) { int32_t sortkey_len = 0; @@ -488,8 +473,6 @@ UErrorCode icu_sortkey8_from_utf16(UCollator *coll, dest8->utf8_len = sortkey_len; else icu_buf_utf8_clear(dest8); - - return sortkey_len; } @@ -689,7 +672,7 @@ struct icu_normalizer * icu_normalizer_create(const char *rules, char action, normalizer->rules16->utf16_len, UTRANS_FORWARD, 0, 0, - normalizer->parse_error, status); + &normalizer->parse_error, status); break; case 'r': case 'R': @@ -698,7 +681,7 @@ struct icu_normalizer * icu_normalizer_create(const char *rules, char action, normalizer->rules16->utf16_len, UTRANS_REVERSE , 0, 0, - normalizer->parse_error, status); + &normalizer->parse_error, status); break; default: *status = U_UNSUPPORTED_ERROR; @@ -931,14 +914,31 @@ struct icu_chain * icu_chain_xml_config(const xmlNode *xml_node, else if (!strcmp((const char *) node->name, "display")) step = icu_chain_insert_step(chain, ICU_chain_step_type_display, (const uint8_t *) "", status); + else if (!strcmp((const char *) node->name, "normalize")) + { + yaz_log(YLOG_WARN, "Element %s is deprecated. " + "Use transform instead", node->name); + step = icu_chain_insert_step(chain, ICU_chain_step_type_normalize, + (const uint8_t *) xml_rule, status); + } + else if (!strcmp((const char *) node->name, "index") + || !strcmp((const char *) node->name, "sortkey")) + { + yaz_log(YLOG_WARN, "Element %s is no longer needed. " + "Remove it from the configuration", node->name); + } + else + { + yaz_log(YLOG_WARN, "Unknown element %s", node->name); + icu_chain_destroy(chain); + return 0; + } xmlFree(xml_rule); - if (!step || U_FAILURE(*status)) + if (step && U_FAILURE(*status)) { icu_chain_destroy(chain); return 0; } - - } return chain; }