JUNE 1994 CANSEARCH VERSION 1.1 RELEASE NOTES =================================== The version 1.1 release of the CANSEARCH application consists of the following components: CANSRCH.TAZ - executables CANSRC.TAZ - complete source tree CANINC.TAZ - complete set of header files UMAN1-1.DOZ - user manual source file (Word for Windows 6.0) UMAN1-1.PSZ - user manual PostScript output CANSRC.TAZ and CANINC.TAZ software components should be installed under the root directory \IRORIGIN\IR. Before installing the software, you may want to backup these directories if they already exist, especially any configuration files. The software documentation and related files remain unchanged from the previous release. This release of the CANSEARCH application and the IR Toolkit incorporates several bug-fixes, some of which will affect the Application Programming Interface (API) to the Toolkit. To assist users in integrating or understanding the changes which have been made, the source tree contains the previous version of any modified file under the same filename but with a ".old" extension. The file "canold.txt" in the dev directory contains directory listings of the ".old" files. The user manual contains several minor corrections and a new appendix, "Configuring CanSearch". The following is a list of the bug-fixes. SPR #9.1 & #9.2 --------------- Corrected the initialization of Oid structure in RESC/OID_TOOL.c, ASN_DottedStringToOid(). SPR #17 ------- Processing of Initialize Request APDU Options bits now support greater than 8 bits being sent as long as option bits are lower 8 bits. (OP\AM\AM_INIT.C, OpAm_InitService()) Also, the reading of the options bits from the configuration files has been fixed. (OP\TM\TM_INIT.C, OpTm_Initialize() & OP\TM\TM_TRGT.C, OpTm_ConvertRecordToTargetInfo()). SPR #30 ------- References to the IMPLICIT INTEGER base type in APDUs are now treated as long instead of short integers in the following PDUs: InitializeReq, InitializeResp, SearchReq, SearchResp, PresentReq, PresentResp, and DeleteResultSetResp. The relevant API data structures were updated as shown below: IR_AIP.H data structures ======================== typedef struct { VISIBLE_STRING protocolVersion; BOOLEAN search; BOOLEAN present; BOOLEAN delSet; BOOLEAN resourceReport; BOOLEAN triggerResourceCtrl; BOOLEAN resourceCtrl; BOOLEAN accessCtrl; LONG preferredMessageSize; LONG maximumRecordSize; VISIBLE_STRING implementationId; VISIBLE_STRING implementationName; VISIBLE_STRING implementationVersion; VISIBLE_STRING userInfo; BOOLEAN isMalloced; } IRO_COMM_INIT_RESP; typedef struct { IR_ASSOC_ID assocId; LONG smallSetUpperBound; /* -1 for default */ LONG largeSetLowerBound; /* -1 for default */ LONG mediumSetPresentNum; /* -1 for default */ BOOLEAN replaceIndicator; /* if supported */ VISIBLE_STRING resultSetName; /* must at least say default */ IR_LIST dbNameList; /* Database list * Visible string */ IR_ELEM_SET_NAME_TYPE smallSetNameType; IR_ELEM_SET_NAMES smallSetList; /* Optional list * Visible string */ IR_ELEM_SET_NAME_TYPE mediumSetNameType; IR_ELEM_SET_NAMES mediumSetList; /* Optional list * Visible string */ OBJECT_IDENTIFIER recordSyntax; /* ie US MARC */ IR_QUERY_TYPE queryType; /* Query Type (RPN) */ IR_RPN_QUERY_STRUCT query; /* term and op list */ BOOLEAN isMalloced; } IRO_SEARCH_REQ; typedef struct { BOOLEAN searchStatus; IR_RESULT_SET_STATUS resultSetStatus; IR_PRESENT_STATUS presentStatus; IRO_WORK_SPACE_ID wsId; IR_DIAG_RECORD diagnostic; /* On err. */ LONG numRecInWs; /* Used by amicus */ LONG numRecOnTarget; /* Used by amicus */ LONG nextPosOnTarget; /* Used by amicus */ BOOLEAN isMalloced; } IRO_COMM_SRCH_RESP; typedef struct { IR_ASSOC_ID assocId; IRO_WORK_SPACE_ID wsId; VISIBLE_STRING resultSetName; /* optional - default */ LONG startRec; /* Start record on target */ LONG numRecords; /* num records from target */ IR_ELEM_SET_NAME_TYPE elemSetNameType; IR_ELEM_SET_NAMES elemSetList; /* Optional list * Visible string */ OBJECT_IDENTIFIER recordSyntax; /* US MARC */ BOOLEAN isMalloced; } IRO_PRESENT_REQ; typedef struct { IR_PRESENT_STATUS presentStatus; IRO_WORK_SPACE_ID wsId; IR_DIAG_RECORD diagnostic; /* On err. */ LONG numRecInWs; /* Used by amicus */ LONG numRecOnTarget; /* Used by amicus */ LONG numRecRetrieved;/* Used by amicus */ LONG nextPosOnTarget; /* Used by amicus */ BOOLEAN isMalloced; } IRO_COMM_PRSNT_RESP; typedef struct { IR_DELETE_SET_STATUS deleteStatus; IR_LIST statusList; /* IR_DELETE_STATUS_STRUCT */ LONG numberNotDeleted; IR_LIST bulkStatusList; /* IR_DELETE_STATUS_STRUCT */ VISIBLE_STRING deleteMessage; BOOLEAN isMalloced; } IRO_COMM_DEL_RESP; typedef struct { IRO_WORK_SPACE_ID wsId; VISIBLE_STRING name; /* result set name */ IR_ASSOC_ID assocId; /* association used */ LONG totalTargetRecords; /* Target count */ LONG numWSRecords; /* origin only */ LONG nextTargetRec; /* Target next pos */ BOOLEAN searchStatus; /* Search response */ IR_RESULT_SET_STATUS resultSetStatus;/* Search response */ IR_DIAG_RECORD nonSurrDiag; /* latest diagnostic rec */ LONG numRecReturned; /* most recent service * call. */ IR_PRESENT_STATUS presentStatus; /* ditto */ BOOLEAN targetResultsDeleted; BOOLEAN presentSrvcSupported; BOOLEAN deleteSrvcSupported; BOOLEAN presenting; BOOLEAN deleting; BOOLEAN isMalloced; } IRO_WS_HEADER_INFO; IR_OP.H data structures ======================= typedef struct { BIT_STRING protocolVersion; BIT_STRING options; LONG preferredMessageSize; LONG maximumRecordSize; /* Optional */ VISIBLE_STRING implementationId; /* Optional */ VISIBLE_STRING implementationName; /* Optional */ VISIBLE_STRING implementationVersion; /* Optional */ BOOLEAN isMalloced; } OP_INIT_REQ_INFO; typedef struct { IR_TARGET_ID targetId; VISIBLE_STRING targetName; VISIBLE_STRING userAuthentication; LONG defSmallSetUpperBound; LONG defLargeSetLowerBound; LONG defPresentNumber; OBJECT_IDENTIFIER defPreferedRecSyntax; VISIBLE_STRING defElementSetName; VISIBLE_STRING displayFormats; VISIBLE_STRING description; BIT_STRING options; VISIBLE_STRING contactInfo; BOOLEAN defResultSetNamingSupported; SHORT maxNumResultSets; SHORT hoursOfOperation; VISIBLE_STRING chargingPolicy; IR_LIST dbInfo; /* list of IR_DATABASE_INFO */ VISIBLE_STRING idAuthentication; VISIBLE_STRING applCntxName; VISIBLE_STRING applProcessTitle; VISIBLE_STRING applEntityQual; VISIBLE_STRING ipAddress; VISIBLE_STRING ipDomainName; USHORT portNum; BOOLEAN isMalloced; } OP_TARGET_INFO_STRUCT; typedef struct OP_WS_INFO { IR_WS_ID wsId; VISIBLE_STRING resultSetName; IR_USER_ID userId; IR_ASSOC_ID assocId; LONG totalTargetRecords; LONG numWSRecords; LONG nextTargetRec; LONG numRecReturned; BOOLEAN searchStatus; IR_RESULT_SET_STATUS resultSetStatus; IR_PRESENT_STATUS presentStatus; IR_DIAG_RECORD nonSurrDiag; BOOLEAN targetResultsDeleted; BOOLEAN presenting; BOOLEAN deleting; IR_LIST records;/*list of IR_RECORD_STRUCT */ BOOLEAN isMalloced; } OP_WS_INFO; IR.H data structures ==================== typedef struct { IR_TARGET_ID targetId; VISIBLE_STRING targetName; VISIBLE_STRING userAuthentication; LONG defSmallSetUpperBound; LONG defLargeSetLowerBound; LONG defPresentNumber; OBJECT_IDENTIFIER defPreferedRecSyntax; VISIBLE_STRING defElementSetName; BOOLEAN defResultSetNamingSupported; VISIBLE_STRING displayFormats; BOOLEAN isMalloced; } IR_USER_TARGET_INFO; typedef struct { LONG attrType; LONG attrValue; BOOLEAN isMalloced; } IR_ATTR_ELEM; typedef LONG IR_PRESENT_STATUS; typedef LONG IR_RESULT_SET_STATUS; typedef struct { OBJECT_IDENTIFIER diagnosticSetId; LONG condition; /* as per the specified * diagnostic set */ VISIBLE_STRING addInfo; /* as per the specified * diagnostic set */ BOOLEAN isMalloced; } IR_DIAG_RECORD; typedef LONG IR_DELETE_SET_STATUS; SPR #56 ------- Corrected support for elementSetNames in PresentReq PDU. Created new module OP\PM\PM_UTIL.C to handle ElementSetNames structures. Added calls to utility routines in OP\PM\PM_IRO.C, IRO_Present(). Modified IRO_PRESENT_REQ structure in INCLUDE\IR_API.H: typedef struct { IR_ASSOC_ID assocId; IRO_WORK_SPACE_ID wsId; VISIBLE_STRING resultSetName; /* optional - default */ LONG startRec; /* Start record on target*/ LONG numRecords; /* num records from target */ IR_ELEM_SET_NAME_TYPE elemSetNameType; IR_ELEM_SET_NAMES elemSetList; /* Optional list */ OBJECT_IDENTIFIER recordSyntax; /* US MARC */ BOOLEAN isMalloced; } IRO_PRESENT_REQ; Fixes to ASN.1 -------------- The definitions of the AccessControlReq and AccessControlResp PDUs were corrected in the IR ASN.1 definition module, and recompiled using SNACC v1.1. The ASN library and header files were also updated. To accommodate the revised definition of the AccessControl PDUs, the IRO_AccessControl() function OP\ARC\ARC_ACCS.C was updated. Also, idAuthentication element of the InitializeReq PDU had to be defined as a VisibleString for the SNACC compiler. Miscellaneous ------------- 1. Under the SRC directory a "make.bat" has been created which will make the entire application. Before using it however, you should ensure that your compiling environment has been setup correctly. The "make" may take several hours and the results of the make can be found in the file "make.out". 2. The utilities for creating the user and target information files, user.exe and targets.exe, have been re-written for this release and the source has been provided under SRC/CFG directory. The utilities can be built independently of the IR toolkit and the libraries. However, any changes made to the source in OP/TM relating to the user and target information files (TM_USER.C & TM_TRGT.C) will have to be reflected in the configuration utilities. A couple of minor bugs relating to optional elements in the target information file were also fixed. 3. Two DLL's have been added to the "bin" directory. The files, xvtw.dll and xvtwtx.dll, are required for release 3 of the XVT portability toolkit.