Update cql2xcql, cql2pqf to use options (same style)
authorAdam Dickmeiss <adam@indexdata.dk>
Thu, 11 Mar 2004 09:34:42 +0000 (09:34 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Thu, 11 Mar 2004 09:34:42 +0000 (09:34 +0000)
util/cql2pqf.c
util/cql2xcql.c

index 516391f..9a11bbc 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: cql2pqf.c,v 1.2 2003-12-18 16:45:19 mike Exp $
-   Copyright (C) 2002-2003
+/* $Id: cql2pqf.c,v 1.3 2004-03-11 09:34:42 adam Exp $
+   Copyright (C) 2002-2004
    Index Data Aps
 
 This file is part of the YAZ toolkit.
@@ -12,33 +12,57 @@ See the file LICENSE.
 
 #include <yaz/cql.h>
 
+static void usage()
+{
+    fprintf (stderr, "usage\n cql2pqf [-n <n>] <properties> [<query>]\n");
+    exit (1);
+}
+
 int main(int argc, char **argv)
 {
     cql_transform_t ct;
     int r;
-    int i, it = 1;
+    int i, iterations = 1;
     CQL_parser cp = cql_parser_create();
+    char *query = 0;
+    char *fname = 0;
+
+    int ret;
+    char *arg;
 
-    if (argc < 2)
+    while ((ret = options("n:", argv, argc, &arg)) != -2)
     {
-        fprintf (stderr, "usage\n cqltransform <properties> [<query>] [iterations]\n");
-        exit (1);
+        switch (ret)
+        {
+        case 0:
+           if (!fname)
+               fname = arg;
+           else
+               query = arg;
+            break;
+       case 'n':
+           iterations = atoi(arg);
+           break;
+       default:
+           usage();
+       }
     }
-    ct = cql_transform_open_fname(argv[1]);
+    if (!fname)
+       usage();
+    ct = cql_transform_open_fname(fname);
     if (!ct)
     {
-        fprintf (stderr, "failed to read properties %s\n", argv[1]);
+        fprintf (stderr, "failed to read properties %s\n", fname);
         exit (1);
     }
-    if (argc >= 4)
-        it = atoi(argv[3]);
 
-    for (i = 0; i<it; i++)
+    if (query)
     {
-    if (argc >= 3)
-        r = cql_parser_string(cp, argv[2]);
+       for (i = 0; i<iterations; i++)
+           r = cql_parser_string(cp, query);
+    }
     else
-        r = cql_parser_stdio(cp, stdin);
+       r = cql_parser_stdio(cp, stdin);
 
     if (r)
         fprintf (stderr, "Syntax error\n");
@@ -52,7 +76,13 @@ int main(int argc, char **argv)
             cql_transform_error(ct, &addinfo);
             printf ("Transform error %d %s\n", r, addinfo ? addinfo : "");
         }
-    }
+       else
+       {
+           FILE *null = fopen("/dev/null", "w");
+           for (i = 1; i<iterations; i++)
+               cql_transform_FILE(ct, cql_parser_result(cp), null);
+           fclose(null);
+       }
     }
     cql_transform_close(ct);
     cql_parser_destroy(cp);
index 2dadb4c..d23a415 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: cql2xcql.c,v 1.2 2004-03-10 16:34:31 adam Exp $
-   Copyright (C) 2002-2003
+/* $Id: cql2xcql.c,v 1.3 2004-03-11 09:34:42 adam Exp $
+   Copyright (C) 2002-2004
    Index Data Aps
 
 This file is part of the YAZ toolkit.