Added several type casts due to no portable way of doing printf of
[yaz-moved-to-github.git] / src / zoom-c.c
index 13a63e9..c05e51c 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 1995-2005, Index Data ApS
  * See the file LICENSE for details.
  *
- * $Id: zoom-c.c,v 1.65 2006-03-13 10:48:14 adam Exp $
+ * $Id: zoom-c.c,v 1.70 2006-04-21 10:28:07 adam Exp $
  */
 /**
  * \file zoom-c.c
@@ -245,6 +245,12 @@ void ZOOM_connection_remove_task (ZOOM_connection c)
             assert (0);
         }
         xfree (task);
+
+        if (!c->tasks)
+        {
+            ZOOM_Event event = ZOOM_Event_create(ZOOM_EVENT_END);
+            ZOOM_connection_put_event(c, event);
+        }
     }
 }
 
@@ -912,8 +918,8 @@ ZOOM_resultset_records (ZOOM_resultset r, ZOOM_record *recs,
 
     if (!r)
         return ;
-    yaz_log(log_api, "%p ZOOM_resultset_records r=%p start=%d count=%d",
-            r, r, start, count);
+    yaz_log(log_api, "%p ZOOM_resultset_records r=%p start=%ld count=%ld",
+            r, r, (long) start, (long) count);
     if (count && recs)
         force_present = 1;
     ZOOM_resultset_retrieve (r, force_present, start, count);
@@ -1144,7 +1150,7 @@ static zoom_ret ZOOM_connection_send_init (ZOOM_connection c)
         ZOOM_options_get(c->options, "implementationName"),
         odr_prepend(c->odr_out, "ZOOM-C", ireq->implementationName));
 
-    version = odr_strdup(c->odr_out, "$Revision: 1.65 $");
+    version = odr_strdup(c->odr_out, "$Revision: 1.70 $");
     if (strlen(version) > 10)   /* check for unexpanded CVS strings */
         version[strlen(version)-2] = '\0';
     ireq->implementationVersion = odr_prepend(c->odr_out,
@@ -1211,26 +1217,11 @@ static zoom_ret ZOOM_connection_send_init (ZOOM_connection c)
         
         if ((oi_unit = yaz_oi_update(oi, c->odr_out, NULL, 0, 0)))
         {
-            char **charsets_addresses = 0;
-            char **langs_addresses = 0;
-            int charsets_count = 0;
-            int langs_count = 0;
-           
-            if (c->charset)
-                nmem_strsplit_blank(c->odr_out->mem, c->charset,
-                                    &charsets_addresses, &charsets_count);
-            if (c->lang)
-                nmem_strsplit_blank(c->odr_out->mem, c->lang,
-                                    &langs_addresses, &langs_count);
             ODR_MASK_SET(ireq->options, Z_Options_negotiationModel);
             oi_unit->which = Z_OtherInfo_externallyDefinedInfo;
             oi_unit->information.externallyDefinedInfo =
-                yaz_set_proposal_charneg(c->odr_out,
-                                         (const char **) charsets_addresses,
-                                         charsets_count,
-                                         (const char **) langs_addresses,
-                                         langs_count, 
-                                         1);
+                yaz_set_proposal_charneg_list(c->odr_out, " ",
+                                              c->charset, c->lang, 1);
         }
     }
     assert (apdu);
@@ -1874,7 +1865,7 @@ ZOOM_record_get (ZOOM_record rec, const char *type_spec, int *len)
         }
         return 0;
     }
-    else if (!strcmp (type, "xml") || !strcmp(type, "oai"))
+    else if (!strcmp (type, "xml"))
     {
         Z_External *r = (Z_External *) npr->u.databaseRecord;
         oident *ent = oid_getentbyoid(r->direct_reference);
@@ -1898,8 +1889,6 @@ ZOOM_record_get (ZOOM_record rec, const char *type_spec, int *len)
             const char *ret_buf;
             int marc_decode_type = YAZ_MARC_MARCXML;
 
-            if (!strcmp(type, "oai"))
-                marc_decode_type = YAZ_MARC_OAIMARC;
             switch (ent->value)
             {
             case VAL_SOIF:
@@ -2383,9 +2372,10 @@ static zoom_ret send_present(ZOOM_connection c)
     *req->resultSetStartPoint = resultset->start + 1;
     *req->numberOfRecordsRequested = resultset->step>0 ?
         resultset->step : resultset->count;
+    if (*req->numberOfRecordsRequested + resultset->start > resultset->size)
+        *req->numberOfRecordsRequested = resultset->size -  resultset->start;
     assert (*req->numberOfRecordsRequested > 0);
 
-
     if (syntax && *syntax)
         req->preferredRecordSyntax =
             yaz_str_to_z3950oid (c->odr_out, CLASS_RECSYN, syntax);