X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=util%2Fcql2pqf.c;h=203cdae736e6859af39c5ed8533d54d10d10eca0;hp=e182db05d579c9e2b7d4b3ddf56348ec9b80d395;hb=fbd98e3ba1435882c6fa121e5dee6648ed295b60;hpb=77c5a4fca8b516fd39b8ba213daed17a465a6b2a diff --git a/util/cql2pqf.c b/util/cql2pqf.c index e182db0..203cdae 100644 --- a/util/cql2pqf.c +++ b/util/cql2pqf.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2012 Index Data + * Copyright (C) 1995-2013 Index Data * See the file LICENSE for details. */ #if HAVE_CONFIG_H @@ -15,7 +15,8 @@ static void usage(void) { - fprintf(stderr, "usage\n cql2pqf [-n ] [-r] []\n"); + fprintf(stderr, "usage\n cql2pqf [-n ] [-r] [-S] " + "[]\n"); exit(1); } @@ -26,12 +27,13 @@ int main(int argc, char **argv) char *query = 0; char *fname = 0; int reverse = 0; - int verbose = 1; + int verbose = 0; + int do_strict = 0; int ret; char *arg; - while ((ret = options("n:rv", argv, argc, &arg)) != -2) + while ((ret = options("n:rSv", argv, argc, &arg)) != -2) { switch (ret) { @@ -47,6 +49,9 @@ int main(int argc, char **argv) case 'r': reverse = 1; break; + case 'S': + do_strict = 1; + break; case 'v': verbose = 1; break; @@ -68,9 +73,14 @@ int main(int argc, char **argv) if (reverse) { + char buf[1024]; + if (!query) - usage(); - else + { + if (fgets(buf, sizeof buf, stdin)) + query = buf; + } + if (query) { ODR odr = odr_createmem(ODR_ENCODE); YAZ_PQF_Parser pp = yaz_pqf_create(); @@ -79,11 +89,11 @@ int main(int argc, char **argv) { fprintf(stderr, "PQF syntax error\n"); } - else + else { int ret = cql_transform_rpn2cql_stream(ct, cql_fputs, stdout, rpn); - + if (ret) { const char *addinfo; @@ -101,7 +111,8 @@ int main(int argc, char **argv) { CQL_parser cp = cql_parser_create(); int r = 0; - + + cql_parser_strict(cp, do_strict); if (query) { if (verbose) @@ -111,7 +122,7 @@ int main(int argc, char **argv) } else r = cql_parser_stdio(cp, stdin); - + if (r) fprintf(stderr, "Syntax error\n"); else