X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=util%2Fyaz-icu.c;h=10fa2f599ffa53da33e09ada8850af81893c0f07;hp=c51061777ba68689b7eaf503f67554e5f010046b;hb=36f0d152f5f2b4d6ef4bcb01a041f4c16c1deaf8;hpb=6135f5d048a8bbbc29d14deb9512202c777bd6bc diff --git a/util/yaz-icu.c b/util/yaz-icu.c index c510617..10fa2f5 100644 --- a/util/yaz-icu.c +++ b/util/yaz-icu.c @@ -443,7 +443,6 @@ static void process_text_file(const struct config_t *p_config) long unsigned int line_count = 0; UErrorCode status = U_ZERO_ERROR; - int success = 0; if (!xml_node) { @@ -454,11 +453,12 @@ static void process_text_file(const struct config_t *p_config) config.chain = icu_chain_xml_config(xml_node, 1, &status); - if (config.chain && U_SUCCESS(status)) - success = 1; - else { + if (!config.chain || !U_SUCCESS(status)) + { printf("Could not set up ICU chain from config file '%s' \n", config.conffile); + if (!U_SUCCESS(status)) + printf("ICU Error: %d %s\n", status, u_errorName(status)); exit(1); } @@ -471,33 +471,43 @@ static void process_text_file(const struct config_t *p_config) /* read input lines for processing */ while ((line=fgets(linebuf, sizeof(linebuf)-1, config.infile))) { - success = icu_chain_assign_cstr(config.chain, line, &status); + WRBUF sw = wrbuf_alloc(); + WRBUF cdata = wrbuf_alloc(); + int success = icu_chain_assign_cstr(config.chain, line, &status); line_count++; while (success && icu_chain_next_token(config.chain, &status)) { - WRBUF sw = wrbuf_alloc(); if (U_FAILURE(status)) success = 0; - else { + 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, - "sortoutput) { + wrbuf_rewind(cdata); + wrbuf_xmlputs(cdata, wrbuf_cstr(sw)); fprintf(config.outfile, " sortkey=\"%s\"", - wrbuf_cstr(sw)); + wrbuf_cstr(cdata)); } fprintf(config.outfile, "/>\n"); } @@ -515,16 +525,16 @@ static void process_text_file(const struct config_t *p_config) fprintf(config.outfile, "\n"); } } - wrbuf_destroy(sw); } - + wrbuf_destroy(sw); + wrbuf_destroy(cdata); } if (p_config->xmloutput) - fprintf(config.outfile, + fprintf(config.outfile, "\n" "\n"); - + icu_chain_destroy(config.chain); xmlFreeDoc(doc); if (line)