X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=zutil%2Fzget.c;h=cccb08f747ddf9e5f8f62e6971a17bcd45cc6e0c;hb=c39a893dfdae5f792139177132e7e7a70e010aa7;hp=04f4f18b153d985bc460a9613559b444a556c447;hpb=a6eef2e7073a7295d1a7bf09f538946135a5ebbb;p=yaz-moved-to-github.git diff --git a/zutil/zget.c b/zutil/zget.c index 04f4f18..cccb08f 100644 --- a/zutil/zget.c +++ b/zutil/zget.c @@ -1,73 +1,9 @@ /* - * Copyright (c) 1995-1999, Index Data. + * Copyright (c) 1995-2003, Index Data. * See the file LICENSE for details. * Sebastian Hammer, Adam Dickmeiss * - * $Log: zget.c,v $ - * Revision 1.3 2000-03-20 19:06:25 adam - * Added Segment request for fronend server. Work on admin for client. - * - * Revision 1.2 1999/11/30 13:47:12 adam - * Improved installation. Moved header files to include/yaz. - * - * Revision 1.1 1999/06/08 10:10:16 adam - * New sub directory zutil. Moved YAZ Compiler to be part of YAZ tree. - * - * Revision 1.17 1999/04/20 09:56:48 adam - * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun). - * Modified all encoders/decoders to reflect this change. - * - * Revision 1.16 1998/08/19 16:10:05 adam - * Changed som member names of DeleteResultSetRequest/Response. - * - * Revision 1.15 1998/03/31 15:13:19 adam - * Development towards compiled ASN.1. - * - * Revision 1.14 1998/02/11 11:53:32 adam - * Changed code so that it compiles as C++. - * - * Revision 1.13 1998/01/29 13:13:39 adam - * Function zget_presentRequest fills resultSetId with "default" instead - * of "Default". - * - * Revision 1.12 1997/10/29 12:00:37 adam - * Routine zget_SearchRequest fills resultSetName member with "default" - * instead of "Default". - * - * Revision 1.11 1997/05/02 08:39:10 quinn - * New PDUs added, thanks to Ronald van der Meer - * - * Revision 1.10 1996/01/02 08:57:23 quinn - * Changed enums in the ASN.1 .h files to #defines. Changed oident.class to oclass - * - * Revision 1.9 1995/09/29 17:11:55 quinn - * Smallish - * - * Revision 1.8 1995/09/27 15:02:43 quinn - * Modified function heads & prototypes. - * - * Revision 1.7 1995/06/15 07:44:52 quinn - * Moving to v3. - * - * Revision 1.6 1995/06/14 15:26:37 quinn - * *** empty log message *** - * - * Revision 1.5 1995/06/07 14:42:30 quinn - * Fixed CLOSE - * - * Revision 1.4 1995/06/07 14:36:25 quinn - * Added CLOSE - * - * Revision 1.3 1995/06/05 10:52:06 quinn - * Fixed some negligences. - * - * Revision 1.2 1995/05/30 10:15:49 quinn - * Added our implementor's ID - * - * Revision 1.1 1995/05/22 11:30:20 quinn - * Adding Z39.50-1992 stuff to proto.c. Adding zget.c - * - * + * $Id: zget.c,v 1.14 2003-02-23 21:10:07 adam Exp $ */ #include @@ -79,16 +15,30 @@ Z_InitRequest *zget_InitRequest(ODR o) r->referenceId = 0; r->options = (Odr_bitmask *)odr_malloc(o, sizeof(*r->options)); ODR_MASK_ZERO(r->options); - r->protocolVersion = (Odr_bitmask *)odr_malloc(o, sizeof(*r->protocolVersion)); + r->protocolVersion = (Odr_bitmask *) + odr_malloc(o, sizeof(*r->protocolVersion)); + + ODR_MASK_SET(r->options, Z_Options_search); + ODR_MASK_SET(r->options, Z_Options_present); + ODR_MASK_ZERO(r->protocolVersion); - r->preferredMessageSize = (int *)odr_malloc(o, sizeof(int)); - *r->preferredMessageSize = 30*1024; - r->maximumRecordSize = (int *)odr_malloc(o, sizeof(int)); - *r->maximumRecordSize = 30*1024; + + ODR_MASK_SET(r->protocolVersion, Z_ProtocolVersion_1); + ODR_MASK_SET(r->protocolVersion, Z_ProtocolVersion_2); + + r->preferredMessageSize = odr_intdup(o, 30*1024); + r->maximumRecordSize = odr_intdup(o, 30*1024); r->idAuthentication = 0; - r->implementationId = "YAZ (id=81)"; + r->implementationId = "81"; r->implementationName = "Index Data/YAZ"; - r->implementationVersion = YAZ_VERSION; + r->implementationVersion = YAZ_VERSION +#ifdef YAZ_DATE_STR + " (" YAZ_DATE_STR ")" +#endif +#ifdef YAZ_OS + " " YAZ_OS +#endif + ; r->userInformationField = 0; r->otherInfo = 0; return r; @@ -103,15 +53,19 @@ Z_InitResponse *zget_InitResponse(ODR o) ODR_MASK_ZERO(r->options); r->protocolVersion = (Odr_bitmask *)odr_malloc(o, sizeof(*r->protocolVersion)); ODR_MASK_ZERO(r->protocolVersion); - r->preferredMessageSize = (int *)odr_malloc(o, sizeof(int)); - *r->preferredMessageSize = 30*1024; - r->maximumRecordSize = (int *)odr_malloc(o, sizeof(int)); - *r->maximumRecordSize = 30*1024; - r->result = (int *)odr_malloc(o, sizeof(bool_t)); - *r->result = 1; - r->implementationId = "YAZ (id=81)"; + r->preferredMessageSize = odr_intdup(o, 30*1024); + r->maximumRecordSize = odr_intdup(o, 30*1024); + r->result = odr_intdup(o, 1); + r->implementationId = "81"; r->implementationName = "Index Data/YAZ"; - r->implementationVersion = YAZ_VERSION; + r->implementationVersion = YAZ_VERSION +#ifdef YAZ_DATE_STR + " (" YAZ_DATE_STR ")" +#endif +#ifdef YAZ_OS + " " YAZ_OS +#endif + ; r->userInformationField = 0; r->otherInfo = 0; return r; @@ -122,14 +76,10 @@ Z_SearchRequest *zget_SearchRequest(ODR o) Z_SearchRequest *r = (Z_SearchRequest *)odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->smallSetUpperBound = (int *)odr_malloc(o, sizeof(int)); - *r->smallSetUpperBound = 0; - r->largeSetLowerBound = (int *)odr_malloc(o, sizeof(int)); - *r->largeSetLowerBound = 1; - r->mediumSetPresentNumber = (int *)odr_malloc(o, sizeof(int)); - *r->mediumSetPresentNumber = 0; - r->replaceIndicator = (int *)odr_malloc(o, sizeof(bool_t)); - *r->replaceIndicator = 1; + r->smallSetUpperBound = odr_intdup(o, 0); + r->largeSetLowerBound = odr_intdup(o, 1); + r->mediumSetPresentNumber = odr_intdup(o, 0); + r->replaceIndicator = odr_intdup(o, 1); r->resultSetName = "default"; r->num_databaseNames = 0; r->databaseNames = 0; @@ -147,14 +97,10 @@ Z_SearchResponse *zget_SearchResponse(ODR o) Z_SearchResponse *r = (Z_SearchResponse *)odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->resultCount = (int *)odr_malloc(o, sizeof(int)); - *r->resultCount = 0; - r->numberOfRecordsReturned = (int *)odr_malloc(o, sizeof(int)); - *r->numberOfRecordsReturned = 0; - r->nextResultSetPosition = (int *)odr_malloc(o, sizeof(int)); - *r->nextResultSetPosition = 0; - r->searchStatus = (int *)odr_malloc(o, sizeof(bool_t)); - *r->searchStatus = 1; + r->resultCount = odr_intdup(o, 0); + r->numberOfRecordsReturned = odr_intdup(o, 0); + r->nextResultSetPosition = odr_intdup(o, 0); + r->searchStatus = odr_intdup(o, 1); r->resultSetStatus = 0; r->presentStatus = 0; r->records = 0; @@ -169,10 +115,8 @@ Z_PresentRequest *zget_PresentRequest(ODR o) r->referenceId = 0; r->resultSetId = "default"; - r->resultSetStartPoint = (int *)odr_malloc(o, sizeof(int)); - *r->resultSetStartPoint = 1; - r->numberOfRecordsRequested = (int *)odr_malloc(o, sizeof(int)); - *r->numberOfRecordsRequested = 10; + r->resultSetStartPoint = odr_intdup(o, 1); + r->numberOfRecordsRequested = odr_intdup(o, 10); r->num_ranges = 0; r->additionalRanges = 0; r->recordComposition = 0; @@ -189,12 +133,9 @@ Z_PresentResponse *zget_PresentResponse(ODR o) Z_PresentResponse *r = (Z_PresentResponse *)odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->numberOfRecordsReturned = (int *)odr_malloc(o, sizeof(int)); - *r->numberOfRecordsReturned = 0; - r->nextResultSetPosition = (int *)odr_malloc(o, sizeof(int)); - *r->nextResultSetPosition = 0; - r->presentStatus = (int *)odr_malloc(o, sizeof(int)); - *r->presentStatus = Z_PRES_SUCCESS; + r->numberOfRecordsReturned = odr_intdup(o, 0); + r->nextResultSetPosition = odr_intdup(o, 0); + r->presentStatus = odr_intdup(o, Z_PRES_SUCCESS); r->records = 0; r->otherInfo = 0; return r; @@ -206,8 +147,7 @@ Z_DeleteResultSetRequest *zget_DeleteResultSetRequest(ODR o) odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->deleteFunction = (int *)odr_malloc(o, sizeof(int)); - *r->deleteFunction = Z_DeleteRequest_list; + r->deleteFunction = odr_intdup(o, Z_DeleteRequest_list); r->num_resultSetList = 0; r->resultSetList = 0; r->otherInfo = 0; @@ -220,8 +160,7 @@ Z_DeleteResultSetResponse *zget_DeleteResultSetResponse(ODR o) odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->deleteOperationStatus = (int *)odr_malloc(o, sizeof(int)); - *r->deleteOperationStatus = Z_DeleteStatus_success; + r->deleteOperationStatus = odr_intdup(o, Z_DeleteStatus_success); r->deleteListStatuses = 0; r->numberNotDeleted = 0; r->bulkStatuses = 0; @@ -240,8 +179,7 @@ Z_ScanRequest *zget_ScanRequest(ODR o) r->attributeSet = 0; r->termListAndStartPoint = 0; r->stepSize = 0; - r->numberOfTermsRequested = (int *)odr_malloc(o, sizeof(int)); - *r->numberOfTermsRequested = 20; + r->numberOfTermsRequested = odr_intdup(o, 20); r->preferredPositionInResponse = 0; r->otherInfo = 0; return r; @@ -253,10 +191,8 @@ Z_ScanResponse *zget_ScanResponse(ODR o) r->referenceId = 0; r->stepSize = 0; - r->scanStatus = (int *)odr_malloc(o, sizeof(int)); - *r->scanStatus = Z_Scan_success; - r->numberOfEntriesReturned = (int *)odr_malloc(o, sizeof(int)); - *r->numberOfEntriesReturned = 0; + r->scanStatus = odr_intdup(o, Z_Scan_success); + r->numberOfEntriesReturned = odr_intdup(o, 0); r->positionOfTerm =0; r->entries = 0; r->attributeSet = 0; @@ -270,8 +206,7 @@ Z_TriggerResourceControlRequest *zget_TriggerResourceControlRequest(ODR o) odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->requestedAction = (int *)odr_malloc(o, sizeof(int)); - *r->requestedAction = Z_TriggerResourceCtrl_resourceReport; + r->requestedAction = odr_intdup(o, Z_TriggerResourceCtrl_resourceReport); r->prefResourceReportFormat = 0; r->resultSetWanted = 0; r->otherInfo = 0; @@ -287,8 +222,7 @@ Z_ResourceControlRequest *zget_ResourceControlRequest(ODR o) r->suspendedFlag = 0; r->resourceReport = 0; r->partialResultsAvailable = 0; - r->responseRequired = (int *)odr_malloc(o, sizeof(bool_t)); - *r->responseRequired = 0; + r->responseRequired = odr_intdup(o, 0); r->triggeredRequestFlag = 0; r->otherInfo = 0; return r; @@ -300,8 +234,7 @@ Z_ResourceControlResponse *zget_ResourceControlResponse(ODR o) odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->continueFlag = (int *)odr_malloc(o, sizeof(bool_t)); - *r->continueFlag = 1; + r->continueFlag = odr_intdup(o, 1); r->resultSetWanted = 0; r->otherInfo = 0; return r; @@ -337,10 +270,9 @@ Z_Segment *zget_Segment(ODR o) Z_Segment *r = (Z_Segment *)odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->numberOfRecordsReturned = (int *)odr_malloc(o, sizeof(int)); - *r->numberOfRecordsReturned = 0; + r->numberOfRecordsReturned = odr_intdup(o, 0); r->num_segmentRecords = 0; - r->segmentRecords = odr_nullval(); + r->segmentRecords = (Z_NamePlusRecord **) odr_nullval(); r->otherInfo = 0; return r; } @@ -350,8 +282,7 @@ Z_Close *zget_Close(ODR o) Z_Close *r = (Z_Close *)odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->closeReason = (int *)odr_malloc(o, sizeof(int)); - *r->closeReason = Z_Close_finished; + r->closeReason = odr_intdup(o, Z_Close_finished); r->diagnosticInformation = 0; r->resourceReportFormat = 0; r->resourceReport = 0; @@ -377,8 +308,7 @@ Z_ResourceReportResponse *zget_ResourceReportResponse(ODR o) odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->resourceReportStatus = (int *)odr_malloc(o, sizeof(int)); - *r->resourceReportStatus = Z_ResourceReportStatus_success; + r->resourceReportStatus = odr_intdup(o, Z_ResourceReportStatus_success); r->resourceReport = 0; r->otherInfo = 0; return r; @@ -401,11 +331,10 @@ Z_SortResponse *zget_SortResponse(ODR o) Z_SortResponse *r = (Z_SortResponse *)odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->sortStatus = (int *)odr_malloc(o, sizeof(int)); - *r->sortStatus = Z_SortStatus_success; - r->resultSetStatus = (int *)odr_malloc(o, sizeof(int)); - *r->resultSetStatus = Z_SortResultSetStatus_empty; + r->sortStatus = odr_intdup(o, Z_SortStatus_success); + r->resultSetStatus = odr_intdup(o, Z_SortResultSetStatus_empty); r->diagnostics = 0; + r->resultCount = 0; r->otherInfo = 0; return r; } @@ -416,8 +345,7 @@ Z_ExtendedServicesRequest *zget_ExtendedServicesRequest(ODR o) odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->function = (int *)odr_malloc(o, sizeof(int)); - *r->function = Z_ExtendedServicesRequest_create; + r->function = odr_intdup(o, Z_ExtendedServicesRequest_create); r->packageType = 0; r->packageName = 0; r->userId = 0; @@ -425,8 +353,7 @@ Z_ExtendedServicesRequest *zget_ExtendedServicesRequest(ODR o) r->permissions = 0; r->description = 0; r->taskSpecificParameters = 0; - r->waitAction = (int *)odr_malloc(o, sizeof(int)); - *r->waitAction = Z_ExtendedServicesRequest_wait; + r->waitAction = odr_intdup(o, Z_ExtendedServicesRequest_waitIfPossible); r->elements = 0; r->otherInfo = 0; return r; @@ -438,8 +365,7 @@ Z_ExtendedServicesResponse *zget_ExtendedServicesResponse(ODR o) odr_malloc(o, sizeof(*r)); r->referenceId = 0; - r->operationStatus = (int *)odr_malloc(o, sizeof(int)); - *r->operationStatus = Z_ExtendedServicesResponse_done; + r->operationStatus = odr_intdup(o, Z_ExtendedServicesResponse_done); r->num_diagnostics = 0; r->diagnostics = 0; r->taskPackage = 0; @@ -447,85 +373,126 @@ Z_ExtendedServicesResponse *zget_ExtendedServicesResponse(ODR o) return r; } +Z_DuplicateDetectionRequest *zget_DuplicateDetectionRequest(ODR o) +{ + Z_DuplicateDetectionRequest *r = (Z_DuplicateDetectionRequest *) + odr_malloc(o, sizeof(*r)); + + r->referenceId = 0; + r->num_inputResultSetIds = 0; + r->inputResultSetIds = 0; + r->outputResultSetName = 0; + r->applicablePortionOfRecord = 0; + r->num_duplicateDetectionCriteria = 0; + r->duplicateDetectionCriteria = 0; + r->clustering = 0; + r->num_retentionCriteria = 0; + r->retentionCriteria = 0; + r->num_sortCriteria = 0; + r->sortCriteria = 0; + r->otherInfo = 0; + return r; +} + +Z_DuplicateDetectionResponse *zget_DuplicateDetectionResponse(ODR o) +{ + Z_DuplicateDetectionResponse *r = (Z_DuplicateDetectionResponse *) + odr_malloc(o, sizeof(*r)); + + r->referenceId = 0; + r->status = odr_intdup(o, Z_DuplicateDetectionResponse_success); + r->resultSetCount = 0; + r->num_diagnostics = 0; + r->diagnostics = 0; + r->otherInfo = 0; + return r; +} + Z_APDU *zget_APDU(ODR o, int which) { Z_APDU *r = (Z_APDU *)odr_malloc(o, sizeof(*r)); - + switch (r->which = which) { - case Z_APDU_initRequest: - r->u.initRequest = zget_InitRequest(o); - break; - case Z_APDU_initResponse: - r->u.initResponse = zget_InitResponse(o); - break; - case Z_APDU_searchRequest: - r->u.searchRequest = zget_SearchRequest(o); - break; - case Z_APDU_searchResponse: - r->u.searchResponse = zget_SearchResponse(o); - break; - case Z_APDU_presentRequest: - r->u.presentRequest = zget_PresentRequest(o); - break; - case Z_APDU_presentResponse: - r->u.presentResponse = zget_PresentResponse(o); - break; - case Z_APDU_deleteResultSetRequest: - r->u.deleteResultSetRequest = zget_DeleteResultSetRequest(o); - break; - case Z_APDU_deleteResultSetResponse: - r->u.deleteResultSetResponse = zget_DeleteResultSetResponse(o); - break; - case Z_APDU_scanRequest: - r->u.scanRequest = zget_ScanRequest(o); - break; - case Z_APDU_scanResponse: - r->u.scanResponse = zget_ScanResponse(o); - break; - case Z_APDU_triggerResourceControlRequest: - r->u.triggerResourceControlRequest = - zget_TriggerResourceControlRequest(o); - break; - case Z_APDU_resourceControlRequest: - r->u.resourceControlRequest = zget_ResourceControlRequest(o); - break; - case Z_APDU_resourceControlResponse: - r->u.resourceControlResponse = zget_ResourceControlResponse(o); - break; - case Z_APDU_segmentRequest: - r->u.segmentRequest = zget_Segment(o); - break; - case Z_APDU_close: - r->u.close = zget_Close(o); - break; - case Z_APDU_accessControlRequest: - r->u.accessControlRequest = zget_AccessControlRequest(o); - break; - case Z_APDU_accessControlResponse: - r->u.accessControlResponse = zget_AccessControlResponse(o); - break; - case Z_APDU_resourceReportRequest: - r->u.resourceReportRequest = zget_ResourceReportRequest(o); - break; - case Z_APDU_resourceReportResponse: - r->u.resourceReportResponse = zget_ResourceReportResponse(o); - break; - case Z_APDU_sortRequest: - r->u.sortRequest = zget_SortRequest(o); - break; - case Z_APDU_sortResponse: - r->u.sortResponse = zget_SortResponse(o); - break; - case Z_APDU_extendedServicesRequest: - r->u.extendedServicesRequest = zget_ExtendedServicesRequest(o); - break; - case Z_APDU_extendedServicesResponse: - r->u.extendedServicesResponse = zget_ExtendedServicesResponse(o); - break; - default: - fprintf(stderr, "Bad APDU-type to zget_APDU"); - exit(1); + case Z_APDU_initRequest: + r->u.initRequest = zget_InitRequest(o); + break; + case Z_APDU_initResponse: + r->u.initResponse = zget_InitResponse(o); + break; + case Z_APDU_searchRequest: + r->u.searchRequest = zget_SearchRequest(o); + break; + case Z_APDU_searchResponse: + r->u.searchResponse = zget_SearchResponse(o); + break; + case Z_APDU_presentRequest: + r->u.presentRequest = zget_PresentRequest(o); + break; + case Z_APDU_presentResponse: + r->u.presentResponse = zget_PresentResponse(o); + break; + case Z_APDU_deleteResultSetRequest: + r->u.deleteResultSetRequest = zget_DeleteResultSetRequest(o); + break; + case Z_APDU_deleteResultSetResponse: + r->u.deleteResultSetResponse = zget_DeleteResultSetResponse(o); + break; + case Z_APDU_scanRequest: + r->u.scanRequest = zget_ScanRequest(o); + break; + case Z_APDU_scanResponse: + r->u.scanResponse = zget_ScanResponse(o); + break; + case Z_APDU_triggerResourceControlRequest: + r->u.triggerResourceControlRequest = + zget_TriggerResourceControlRequest(o); + break; + case Z_APDU_resourceControlRequest: + r->u.resourceControlRequest = zget_ResourceControlRequest(o); + break; + case Z_APDU_resourceControlResponse: + r->u.resourceControlResponse = zget_ResourceControlResponse(o); + break; + case Z_APDU_segmentRequest: + r->u.segmentRequest = zget_Segment(o); + break; + case Z_APDU_close: + r->u.close = zget_Close(o); + break; + case Z_APDU_accessControlRequest: + r->u.accessControlRequest = zget_AccessControlRequest(o); + break; + case Z_APDU_accessControlResponse: + r->u.accessControlResponse = zget_AccessControlResponse(o); + break; + case Z_APDU_resourceReportRequest: + r->u.resourceReportRequest = zget_ResourceReportRequest(o); + break; + case Z_APDU_resourceReportResponse: + r->u.resourceReportResponse = zget_ResourceReportResponse(o); + break; + case Z_APDU_sortRequest: + r->u.sortRequest = zget_SortRequest(o); + break; + case Z_APDU_sortResponse: + r->u.sortResponse = zget_SortResponse(o); + break; + case Z_APDU_extendedServicesRequest: + r->u.extendedServicesRequest = zget_ExtendedServicesRequest(o); + break; + case Z_APDU_extendedServicesResponse: + r->u.extendedServicesResponse = zget_ExtendedServicesResponse(o); + break; + case Z_APDU_duplicateDetectionRequest: + r->u.duplicateDetectionRequest = zget_DuplicateDetectionRequest(o); + break; + case Z_APDU_duplicateDetectionResponse: + r->u.duplicateDetectionResponse = zget_DuplicateDetectionResponse(o); + break; + default: + fprintf(stderr, "Bad APDU-type to zget_APDU"); + exit(1); } return r; }