X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=util%2Fyaz-icu.c;h=044afcb48774b54ab099ee5de89e827c5c065eef;hb=0edd22d3d3fb9bafa8795815517e9ad51d51641f;hp=d11683c1a89053eb7e39d940bb9071a41e9513fa;hpb=ecd6d03e10dfbe4b6bb5b1b599c23bdb7ff305ca;p=yaz-moved-to-github.git diff --git a/util/yaz-icu.c b/util/yaz-icu.c index d11683c..044afcb 100644 --- a/util/yaz-icu.c +++ b/util/yaz-icu.c @@ -1,8 +1,6 @@ -/* - * Copyright (C) 1995-2007, Index Data ApS +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2009 Index Data * See the file LICENSE for details. - * - * $Id: yaz-icu.c,v 1.13 2007-11-12 11:11:16 adam Exp $ */ #if HAVE_CONFIG_H @@ -25,6 +23,7 @@ #include #include +#include /* commando line and config parameters */ static struct config_t { @@ -156,7 +155,7 @@ static void print_icu_converters(const struct config_t *p_config) static void print_icu_transliterators(const struct config_t *p_config) { int32_t buf_cap = 128; - char buf[buf_cap]; + char buf[128]; int32_t i; int32_t count = utrans_countAvailableIDs(); @@ -394,7 +393,7 @@ static void print_icu_xml_locales(const struct config_t *p_config) if(U_FAILURE(status)) { fprintf(stderr, "ICU Error: %d %s\n", status, u_errorName(status)); - exit(status); + exit(2); } } @@ -439,21 +438,21 @@ static void process_text_file(const struct config_t *p_config) UErrorCode status = U_ZERO_ERROR; int success = 0; - if (! xml_node) + if (!xml_node) { printf("Could not parse XML config file '%s' \n", config.conffile); - exit (1); + exit(1); } - config.chain = icu_chain_xml_config(xml_node, 0, &status); + config.chain = icu_chain_xml_config(xml_node, 1, &status); if (config.chain && U_SUCCESS(status)) success = 1; else { printf("Could not set up ICU chain from config file '%s' \n", config.conffile); - exit (1); + exit(1); } if (p_config->xmloutput) @@ -470,25 +469,35 @@ static void process_text_file(const struct config_t *p_config) while (success && icu_chain_next_token(config.chain, &status)) { + WRBUF sw = wrbuf_alloc(); if (U_FAILURE(status)) success = 0; else { + const char *sortkey = icu_chain_token_sortkey(config.chain); + wrbuf_rewind(sw); + wrbuf_puts_escaped(sw, sortkey); token_count++; if (p_config->xmloutput) + { + /* should XML encode this. Bug #1902 */ fprintf(config.outfile, - "\n", + "\n", token_count, line_count, icu_chain_token_norm(config.chain), - icu_chain_token_display(config.chain)); + icu_chain_token_display(config.chain), + wrbuf_cstr(sw)); + } else - fprintf(config.outfile, "%lu %lu '%s' '%s'\n", + fprintf(config.outfile, "%lu %lu '%s' '%s' '%s'\n", token_count, line_count, icu_chain_token_norm(config.chain), - icu_chain_token_display(config.chain)); + icu_chain_token_display(config.chain), + wrbuf_cstr(sw)); } + wrbuf_destroy(sw); } } @@ -527,9 +536,10 @@ int main(int argc, char **argv) "re-configure and re-compile\n"); + exit(3); #endif /* YAZ_HAVE_ICU */ - return(0); + return 0; }