From 36f0d152f5f2b4d6ef4bcb01a041f4c16c1deaf8 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 20 Jan 2009 13:07:39 +0100 Subject: [PATCH] Fixed bug #1902: yaz-icu XML output --- util/yaz-icu.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) 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) -- 1.7.10.4