X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=util%2Fyaz-icu.c;h=1386a16f53cc3aeac32ffcd0eed4b96309e1871d;hp=d85342873f49ba24f794871bb84bb0a3919a372c;hb=28d3e3b08a856a66cb90ebf08787f8fa27a772eb;hpb=5242cb5a8634bfa38b9333ff7f903e718ac6e292 diff --git a/util/yaz-icu.c b/util/yaz-icu.c index d853428..1386a16 100644 --- a/util/yaz-icu.c +++ b/util/yaz-icu.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2012 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ @@ -26,6 +26,7 @@ #include #include +#include /* commando line and config parameters */ struct config_t { @@ -33,6 +34,7 @@ struct config_t { char print[1024]; int xmloutput; int sortoutput; + int org_output; yaz_icu_chain_t chain; FILE * infile; FILE * outfile; @@ -45,6 +47,7 @@ void print_option_error(const struct config_t *p_config) " -c file XML configuration\n" " -p a|c|l|t Print ICU info \n" " -s Show sort normalization key\n" + " -o Show org positions\n" " -x XML output instread of text\n" "\n" "Examples:\n" @@ -77,10 +80,11 @@ void read_params(int argc, char **argv, struct config_t *p_config) p_config->chain = 0; p_config->infile = 0; p_config->outfile = stdout; + p_config->org_output = 0; /* set up command line parameters */ - while ((ret = options("c:p:xs", argv, argc, &arg)) != -2) + while ((ret = options("c:op:sx", argv, argc, &arg)) != -2) { switch (ret) { @@ -96,6 +100,9 @@ void read_params(int argc, char **argv, struct config_t *p_config) case 'x': p_config->xmloutput = 1; break; + case 'o': + p_config->org_output = 1; + break; case 0: if (p_config->infile) { @@ -448,8 +455,6 @@ static void process_text_file(struct config_t *p_config) { printf("Could not set up ICU chain from config file '%s' \n", p_config->conffile); - if (!U_SUCCESS(status)) - printf("ICU Error: %d %s\n", status, u_errorName(status)); exit(1); } @@ -473,7 +478,10 @@ static void process_text_file(struct config_t *p_config) success = 0; else { + size_t start, len; const char *sortkey = icu_chain_token_sortkey(p_config->chain); + + icu_chain_get_org_info(p_config->chain, &start, &len); wrbuf_rewind(sw); wrbuf_puts_escaped(sw, sortkey); token_count++; @@ -513,6 +521,11 @@ static void process_text_file(struct config_t *p_config) { fprintf(p_config->outfile, " '%s'", wrbuf_cstr(sw)); } + if (p_config->org_output) + { + fprintf(p_config->outfile, " %ld+%ld", + (long) start, (long) len); + } fprintf(p_config->outfile, "\n"); } } @@ -540,6 +553,7 @@ int main(int argc, char **argv) #if YAZ_HAVE_ICU struct config_t config; + yaz_enable_panic_backtrace(*argv); read_params(argc, argv, &config); if (config.conffile && strlen(config.conffile))