+ if (!query)
+ {
+ if (fgets(buf, sizeof buf, stdin))
+ {
+ if (*buf && buf[strlen(buf)-1] == '\n')
+ buf[strlen(buf)-1] = '\0';
+ query = buf;
+ }
+ }
+ if (query)
+ {
+ ODR odr = odr_createmem(ODR_ENCODE);
+ YAZ_PQF_Parser pp = yaz_pqf_create();
+ Z_RPNQuery *rpn = yaz_pqf_parse(pp, odr, query);
+ if (!rpn)
+ {
+ fprintf(stderr, "PQF syntax error\n");
+ }
+ else
+ {
+ int ret = 0;
+ if (solr)
+ ret = solr_transform_rpn2solr_stream(ct, cql_fputs,
+ stdout, rpn);
+ else
+ ret = cql_transform_rpn2cql_stream(ct, cql_fputs,
+ stdout, rpn);
+ if (ret)
+ {
+ const char *addinfo;
+ int r = cql_transform_error(ct, &addinfo);
+ printf("Transform error %d %s\n", r, addinfo ? addinfo : "");
+ }
+ else
+ printf("\n");
+ }
+ yaz_pqf_destroy(pp);
+ odr_destroy(odr);
+ }
+ }