From: Adam Dickmeiss Date: Tue, 20 Jan 2009 12:07:39 +0000 (+0100) Subject: Fixed bug #1902: yaz-icu XML output X-Git-Tag: v3.0.42~8 X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=commitdiff_plain;h=36f0d152f5f2b4d6ef4bcb01a041f4c16c1deaf8;hp=5dd6d2f41f8db534e05a86632bdc78b6d4186435 Fixed bug #1902: yaz-icu XML output --- diff --git a/util/yaz-icu.c b/util/yaz-icu.c index e392a3c..10fa2f5 100644 --- a/util/yaz-icu.c +++ b/util/yaz-icu.c @@ -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))) { + 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)