From 6cbdacfdeef5982e7d588aac5fabd5299732e78d Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Wed, 30 Mar 2011 13:41:42 +0200 Subject: [PATCH] yaz-icu: input file may be given. As an alternative to stdin.. Needed it for a gdb run and it seems useful. --- doc/yaz-icu-man.xml | 13 ++++++++++++- util/yaz-icu.c | 42 ++++++++++++++++++++++++++++-------------- 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/doc/yaz-icu-man.xml b/doc/yaz-icu-man.xml index 5248b73..7c016bf 100644 --- a/doc/yaz-icu-man.xml +++ b/doc/yaz-icu-man.xml @@ -29,11 +29,11 @@ yaz-icu - commands -c config -p opt -s -x + infile @@ -42,6 +42,17 @@ yaz-icu is utility which demonstrates the ICU chain module of yaz. (yaz/icu.h). + + The utility can be used in two ways. It may read some text + using an XML configuration for configuring ICU and show text analysis. + This mode is triggered by option -c which specififies + the configuration to be used. The input file is read from standard + input or from a file if infile is specified. + + + The utility may also show ICU information. This is triggered by + option -p. + OPTIONS diff --git a/util/yaz-icu.c b/util/yaz-icu.c index 25e4de0..fe86bed 100644 --- a/util/yaz-icu.c +++ b/util/yaz-icu.c @@ -11,6 +11,7 @@ #include #include +#include #include @@ -40,12 +41,12 @@ static struct config_t { void print_option_error(const struct config_t *p_config) { - fprintf(stderr, "Calling error, valid options are :\n"); - fprintf(stderr, "yaz-icu\n" - " [-c (path/to/config/file.xml)]\n" - " [-p (a|c|l|t)] print ICU info \n" - " [-s] Show sort normalization key\n" - " [-x] XML output\n" + fprintf(stderr, "yaz-icu [options] [infile]\n" + "Options:\n" + " -c file XML configuration\n" + " -p a|c|l|t Print ICU info \n" + " -s Show sort normalization key\n" + " -x XML output instread of text\n" "\n" "Examples:\n" "cat hugetextfile.txt | ./yaz-icu -c config.xml \n" @@ -75,7 +76,7 @@ void read_params(int argc, char **argv, struct config_t *p_config) p_config->xmloutput = 0; p_config->sortoutput = 0; p_config->chain = 0; - p_config->infile = stdin; + p_config->infile = 0; p_config->outfile = stdout; /* set up command line parameters */ @@ -96,17 +97,30 @@ void read_params(int argc, char **argv, struct config_t *p_config) case 'x': p_config->xmloutput = 1; break; + case 0: + if (p_config->infile) + { + fprintf(stderr, "yaz-icu: only one input file may be given\n"); + print_option_error(p_config); + } + p_config->infile = fopen(arg, "r"); + if (!p_config->infile) + { + fprintf(stderr, "yaz-icu: cannot open %s : %s\n", + arg, strerror(errno)); + exit(1); + } + break; default: - printf("Got %d\n", ret); + fprintf(stderr, "yaz_icu: invalid option: %s\n", arg); print_option_error(p_config); } } - - if ((!strlen(p_config->conffile) - && !strlen(p_config->print)) - || !config.infile - || !config.outfile) - + + if (p_config->infile == 0) + p_config->infile = stdin; + + if (!strlen(p_config->conffile) && !strlen(p_config->print)) print_option_error(p_config); } -- 1.7.10.4