X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=server%2Fseshigh.c;h=0a54b65c70a7976cd367002cb869d323cdfe5646;hp=ced78e1a5000e4ccac3898854ab5ad6dc77dff5a;hb=63ce3b67bdea2b7cd0531f3f11ccbc8c94753455;hpb=3060b77b776350c6e677c06b3070542dba5c42b6 diff --git a/server/seshigh.c b/server/seshigh.c index ced78e1..0a54b65 100644 --- a/server/seshigh.c +++ b/server/seshigh.c @@ -4,7 +4,19 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: seshigh.c,v $ - * Revision 1.77 1998-07-20 12:38:42 adam + * Revision 1.81 1998-10-13 16:12:24 adam + * Added support for Surrogate Diagnostics for Scan Term entries. + * + * Revision 1.80 1998/09/02 12:41:53 adam + * Added decode stream in bend search structures. + * + * Revision 1.79 1998/08/19 16:10:08 adam + * Changed som member names of DeleteResultSetRequest/Response. + * + * Revision 1.78 1998/08/03 10:23:55 adam + * Fixed bug regarding Options for Sort. + * + * Revision 1.77 1998/07/20 12:38:42 adam * Implemented delete result set service to server API. * * Revision 1.76 1998/05/27 16:57:07 adam @@ -814,7 +826,7 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) ODR_MASK_SET(resp->options, Z_Options_concurrentOperations); strcat(options, " concurop"); } - if (ODR_MASK_GET(req->options, Z_Options_sort && binitreq.bend_sort)) + if (ODR_MASK_GET(req->options, Z_Options_sort) && binitreq.bend_sort) { ODR_MASK_SET(resp->options, Z_Options_sort); strcat(options, " sort"); @@ -876,11 +888,15 @@ static void set_addinfo (Z_DefaultDiagFormat *dr, char *addinfo) static Z_Records *diagrec(association *assoc, int error, char *addinfo) { int oid[OID_SIZE]; - Z_Records *rec = (Z_Records *)odr_malloc (assoc->encode, sizeof(*rec)); + Z_Records *rec = (Z_Records *) + odr_malloc (assoc->encode, sizeof(*rec)); oident bib1; - int *err = (int *)odr_malloc (assoc->encode, sizeof(*err)); - Z_DiagRec *drec = (Z_DiagRec *)odr_malloc (assoc->encode, sizeof(*drec)); - Z_DefaultDiagFormat *dr = (Z_DefaultDiagFormat *)odr_malloc (assoc->encode, sizeof(*dr)); + int *err = (int *) + odr_malloc (assoc->encode, sizeof(*err)); + Z_DiagRec *drec = (Z_DiagRec *) + odr_malloc (assoc->encode, sizeof(*drec)); + Z_DefaultDiagFormat *dr = (Z_DefaultDiagFormat *) + odr_malloc (assoc->encode, sizeof(*dr)); bib1.proto = assoc->proto; bib1.oclass = CLASS_DIAGSET; @@ -1183,6 +1199,7 @@ static Z_APDU *process_searchRequest(association *assoc, request *reqb, bsrr->basenames = req->databaseNames; bsrr->query = req->query; bsrr->stream = assoc->encode; + bsrr->decode = assoc->decode; bsrr->errcode = 0; bsrr->hits = 0; bsrr->errstring = NULL; @@ -1201,6 +1218,7 @@ static Z_APDU *process_searchRequest(association *assoc, request *reqb, bsrq.basenames = req->databaseNames; bsrq.query = req->query; bsrq.stream = assoc->encode; + bsrq.decode = assoc->decode; if (!(bsrt = bend_search(assoc->backend, &bsrq, fd))) return 0; bsrr->hits = bsrt->hits; @@ -1501,23 +1519,43 @@ static Z_APDU *process_scanRequest(association *assoc, request *reqb, int *fd) Odr_oct *o; tab[i] = e = (Z_Entry *)odr_malloc(assoc->encode, sizeof(*e)); - e->which = Z_Entry_termInfo; - e->u.termInfo = t = (Z_TermInfo *)odr_malloc(assoc->encode, sizeof(*t)); - t->suggestedAttributes = 0; - t->displayTerm = 0; - t->alternativeTerm = 0; - t->byAttributes = 0; - t->otherTermInfo = 0; - t->globalOccurrences = &srs->entries[i].occurrences; - t->term = (Z_Term *)odr_malloc(assoc->encode, sizeof(*t->term)); - t->term->which = Z_Term_general; - t->term->u.general = o = (Odr_oct *)odr_malloc(assoc->encode, - sizeof(Odr_oct)); - o->buf = (unsigned char *)odr_malloc(assoc->encode, o->len = o->size = - strlen(srs->entries[i].term)); - memcpy(o->buf, srs->entries[i].term, o->len); - logf(LOG_DEBUG, " term #%d: '%s' (%d)", i, - srs->entries[i].term, srs->entries[i].occurrences); + if (srs->entries[i].occurrences >= 0) + { + e->which = Z_Entry_termInfo; + e->u.termInfo = t = (Z_TermInfo *) + odr_malloc(assoc->encode, sizeof(*t)); + t->suggestedAttributes = 0; + t->displayTerm = 0; + t->alternativeTerm = 0; + t->byAttributes = 0; + t->otherTermInfo = 0; + t->globalOccurrences = &srs->entries[i].occurrences; + t->term = (Z_Term *) + odr_malloc(assoc->encode, sizeof(*t->term)); + t->term->which = Z_Term_general; + t->term->u.general = o = + (Odr_oct *)odr_malloc(assoc->encode, sizeof(Odr_oct)); + o->buf = (unsigned char *) + odr_malloc(assoc->encode, o->len = o->size = + strlen(srs->entries[i].term)); + memcpy(o->buf, srs->entries[i].term, o->len); + logf(LOG_DEBUG, " term #%d: '%s' (%d)", i, + srs->entries[i].term, srs->entries[i].occurrences); + } + else + { + Z_Records *zrecords = diagrec (assoc, + srs->entries[i].errcode, + srs->entries[i].errstring); + logf(LOG_DEBUG, " term sd code=%d addinfo=%s", + srs->entries[i].errcode, + (srs->entries[i].errstring?srs->entries[i].errstring : + "")); + assert (zrecords->which == Z_Records_NSD); + e->which = Z_Entry_surrogateDiagnostic; + e->u.surrogateDiagnostic = + zrecords->u.nonSurrogateDiagnostic; + } } } } @@ -1602,7 +1640,7 @@ static Z_APDU *process_deleteRequest(association *assoc, request *reqb, logf(LOG_LOG, "Got DeleteRequest."); - bdrr->num_setnames = req->num_ids; + bdrr->num_setnames = req->num_resultSetList; bdrr->setnames = req->resultSetList; bdrr->stream = assoc->encode; bdrr->function = *req->deleteFunction; @@ -1616,10 +1654,8 @@ static Z_APDU *process_deleteRequest(association *assoc, request *reqb, odr_malloc (assoc->encode, sizeof(*res->deleteOperationStatus)); *res->deleteOperationStatus = bdrr->delete_status; - res->num_statuses = 0; res->deleteListStatuses = 0; res->numberNotDeleted = 0; - res->num_bulkStatuses = 0; res->bulkStatuses = 0; res->deleteMessage = 0; res->otherInfo = 0;