Revert ZOOM API changes.
[yaz-moved-to-github.git] / src / zoom-c.c
index 7bed6d7..bf4beb0 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 1995-2007, Index Data ApS
  * See the file LICENSE for details.
  *
- * $Id: zoom-c.c,v 1.119 2007-03-20 21:37:32 adam Exp $
+ * $Id: zoom-c.c,v 1.122 2007-03-21 11:27:46 adam Exp $
  */
 /**
  * \file zoom-c.c
@@ -853,9 +853,16 @@ ZOOM_API(ZOOM_resultset)
     return r;
 }
 
-ZOOM_API(int)
+ZOOM_API(void)
     ZOOM_resultset_sort(ZOOM_resultset r,
-                        const char *sort_type, const char *sort_spec)
+                         const char *sort_type, const char *sort_spec)
+{
+    (void) ZOOM_resultset_sort(r, sort_type, sort_spec);
+}
+
+ZOOM_API(int)
+    ZOOM_resultset_sort1(ZOOM_resultset r,
+                         const char *sort_type, const char *sort_spec)
 {
     ZOOM_connection c = r->connection;
     ZOOM_task task;
@@ -1284,7 +1291,7 @@ static zoom_ret ZOOM_connection_send_init(ZOOM_connection c)
                     odr_prepend(c->odr_out, "ZOOM-C",
                                 ireq->implementationName));
     
-    version = odr_strdup(c->odr_out, "$Revision: 1.119 $");
+    version = odr_strdup(c->odr_out, "$Revision: 1.122 $");
     if (strlen(version) > 10)   /* check for unexpanded CVS strings */
         version[strlen(version)-2] = '\0';
     ireq->implementationVersion = 
@@ -2628,21 +2635,21 @@ static zoom_ret send_present(ZOOM_connection c)
 }
 
 ZOOM_API(ZOOM_scanset)
-    ZOOM_connection_scan_pqf(ZOOM_connection c, const char *start)
+    ZOOM_connection_scan(ZOOM_connection c, const char *start)
 {
     ZOOM_scanset s;
     ZOOM_query q = ZOOM_query_create();
 
     ZOOM_query_prefix(q, start);
 
-    s = ZOOM_connection_scan(c, q);
+    s = ZOOM_connection_scan1(c, q);
     ZOOM_query_destroy(q);
     return s;
 
 }
 
 ZOOM_API(ZOOM_scanset)
-    ZOOM_connection_scan(ZOOM_connection c, ZOOM_query q)
+    ZOOM_connection_scan1(ZOOM_connection c, ZOOM_query q)
 {
     char *start;
     char *freeme = 0;
@@ -2842,12 +2849,11 @@ ZOOM_API(const char *)
     return ZOOM_options_get(scan->options, key);
 }
 
-ZOOM_API(int)
+ZOOM_API(void)
     ZOOM_scanset_option_set(ZOOM_scanset scan, const char *key,
                             const char *val)
 {
     ZOOM_options_set(scan->options, key, val);
-    return 0;
 }
 
 static Z_APDU *create_es_package(ZOOM_package p, int type)
@@ -3299,12 +3305,11 @@ ZOOM_API(const char *)
 }
 
 
-ZOOM_API(int)
+ZOOM_API(void)
     ZOOM_package_option_set(ZOOM_package p, const char *key,
                             const char *val)
 {
     ZOOM_options_set(p->options, key, val);
-    return 0;
 }
 
 static int ZOOM_connection_exec_task(ZOOM_connection c)
@@ -3868,20 +3873,18 @@ ZOOM_API(const char *)
     return ZOOM_options_getl(c->options, key, lenp);
 }
 
-ZOOM_API(int)
+ZOOM_API(void)
     ZOOM_connection_option_set(ZOOM_connection c, const char *key,
                                const char *val)
 {
     ZOOM_options_set(c->options, key, val);
-    return 0;
 }
 
-ZOOM_API(int)
+ZOOM_API(void)
     ZOOM_connection_option_setl(ZOOM_connection c, const char *key,
                                 const char *val, int len)
 {
     ZOOM_options_setl(c->options, key, val, len);
-    return 0;
 }
 
 ZOOM_API(const char *)
@@ -3890,12 +3893,11 @@ ZOOM_API(const char *)
     return ZOOM_options_get(r->options, key);
 }
 
-ZOOM_API(int)
+ZOOM_API(void)
     ZOOM_resultset_option_set(ZOOM_resultset r, const char *key,
                               const char *val)
 {
     ZOOM_options_set(r->options, key, val);
-    return 0;
 }
 
 
@@ -4081,6 +4083,12 @@ ZOOM_API(int)
 }
 
 
+static void cql2pqf_wrbuf_puts(const char *buf, void *client_data)
+{
+    WRBUF wrbuf = client_data;
+    wrbuf_puts(wrbuf, buf);
+}
+
 /*
  * Returns an xmalloc()d string containing RPN that corresponds to the
  * CQL passed in.  On error, sets the Connection object's error state
@@ -4091,10 +4099,9 @@ static char *cql2pqf(ZOOM_connection c, const char *cql)
 {
     CQL_parser parser;
     int error;
-    struct cql_node *node;
     const char *cqlfile;
-    static cql_transform_t trans;
-    char pqfbuf[512];
+    cql_transform_t trans;
+    char *result = 0;
 
     parser = cql_parser_create();
     if ((error = cql_parser_string(parser, cql)) != 0) {
@@ -4103,42 +4110,40 @@ static char *cql2pqf(ZOOM_connection c, const char *cql)
         return 0;
     }
 
-    node = cql_parser_result(parser);
-    /* ### Do not call cql_parser_destroy() yet: it destroys `node'! */
-
     cqlfile = ZOOM_connection_option_get(c, "cqlfile");
-    if (cqlfile == 0) {
-        cql_parser_destroy(parser);
-        cql_node_destroy(node);
+    if (cqlfile == 0) 
+    {
         set_ZOOM_error(c, ZOOM_ERROR_CQL_TRANSFORM, "no CQL transform file");
-        return 0;
     }
-
-    if ((trans = cql_transform_open_fname(cqlfile)) == 0) {
+    else if ((trans = cql_transform_open_fname(cqlfile)) == 0) 
+    {
         char buf[512];        
-        cql_parser_destroy(parser);
-        cql_node_destroy(node);
         sprintf(buf, "can't open CQL transform file '%.200s': %.200s",
                 cqlfile, strerror(errno));
         set_ZOOM_error(c, ZOOM_ERROR_CQL_TRANSFORM, buf);
-        return 0;
     }
-
-    error = cql_transform_buf(trans, node, pqfbuf, sizeof pqfbuf);
-    cql_parser_destroy(parser);
-    cql_node_destroy(node);
-    if (error != 0) {
-        char buf[512];
-        const char *addinfo;
-        error = cql_transform_error(trans, &addinfo);
+    else 
+    {
+        WRBUF wrbuf_result = wrbuf_alloc();
+        error = cql_transform(trans, cql_parser_result(parser),
+                              cql2pqf_wrbuf_puts, wrbuf_result);
+        if (error != 0) {
+            char buf[512];
+            const char *addinfo;
+            error = cql_transform_error(trans, &addinfo);
+            sprintf(buf, "%.200s (addinfo=%.200s)", 
+                    cql_strerror(error), addinfo);
+            set_ZOOM_error(c, ZOOM_ERROR_CQL_TRANSFORM, buf);
+        }
+        else
+        {
+            result = xstrdup(wrbuf_cstr(wrbuf_result));
+        }
         cql_transform_close(trans);
-        sprintf(buf, "%.200s (addinfo=%.200s)", cql_strerror(error), addinfo);
-        set_ZOOM_error(c, ZOOM_ERROR_CQL_TRANSFORM, buf);
-        return 0;
+        wrbuf_destroy(wrbuf_result);
     }
-
-    cql_transform_close(trans);
-    return xstrdup(pqfbuf);
+    cql_parser_destroy(parser);
+    return result;
 }
 
 ZOOM_API(int) ZOOM_connection_fire_event_timeout(ZOOM_connection c)