Bug fix: multiple databases weren't specified correctly.
[egate.git] / zlayer-yaz / zaccess.c
index f9e93ad..ad64506 100644 (file)
  * Z39.50 API for the Email gateway - YAZ version
  *
  * $Log: zaccess.c,v $
- * Revision 1.1  1995/07/03 08:21:31  adam
+ * Revision 1.4  1995/07/28 10:51:34  adam
+ * Bug fix: multiple databases weren't specified correctly.
+ *
+ * Revision 1.3  1995/07/20  08:18:15  adam
+ * Bug fix: Multiple databases are separated by commas and NOT by space.
+ *
+ * Revision 1.2  1995/07/05  11:08:33  adam
+ * Bug fix in init request.
+ *
+ * Revision 1.1  1995/07/03  08:21:31  adam
  * Yaz layer moved to new sub directory. zaccess aligned with new
  * YAZ version (1.0b).
  *
@@ -181,6 +190,13 @@ static int send_initreq(struct zass *p, char *auth)
     req->preferredMessageSize = &p->preferredmessagesize;
     req->maximumRecordSize = &p->maxrecordsize;
 
+    ODR_MASK_SET(req->options, Z_Options_search);
+    ODR_MASK_SET(req->options, Z_Options_present);
+    ODR_MASK_SET(req->options, Z_Options_namedResultSets);
+
+    ODR_MASK_SET(req->protocolVersion, Z_ProtocolVersion_1);
+    ODR_MASK_SET(req->protocolVersion, Z_ProtocolVersion_2);
+
     if (auth)
     {
        req->idAuthentication = &idauth;
@@ -464,18 +480,19 @@ const struct zass_searchent *zass_search(ZASS a, struct ccl_rpn_node *query,
        char *p = databases;
        int more;
 
-       while (*p && !isspace(*p))
+       while (*p && !isspace(*p) && *p != ',')
            p++;
-       if (isspace(*p))
+       if (*p)
            more = 1;
        else
            more = 0;
-       *p = '\0';
        if (p - databases)
        {
            req->databaseNames[req->num_databaseNames] = odr_malloc(a->encode,
                (p - databases) + 1);
-           strcpy(req->databaseNames[req->num_databaseNames++], databases);
+           memcpy(req->databaseNames[req->num_databaseNames], databases, 
+                   p-databases);
+           req->databaseNames[req->num_databaseNames++][p-databases] = '\0';
        }
        databases = p + more;
     }