2 * IR toolkit for tcl/tk
4 * See the file LICENSE for details.
5 * Sebastian Hammer, Adam Dickmeiss
8 * Revision 1.20 1996-01-04 11:05:23 adam
9 * New setting: PDUType - returns type of last PDU returned from the target.
10 * Fixed a bug in configure/Makefile.
12 * Revision 1.19 1995/11/13 09:55:46 adam
13 * Multiple records at a position in a result-set with differnt
16 * Revision 1.18 1995/10/18 16:42:44 adam
17 * New settings: smallSetElementSetNames and mediumSetElementSetNames.
19 * Revision 1.17 1995/10/16 17:00:56 adam
20 * New setting: elementSetNames.
21 * Various client improvements. Medium presentation format looks better.
23 * Revision 1.16 1995/09/20 11:37:01 adam
24 * Configure searches for tk4.1 and tk7.5.
27 * Revision 1.15 1995/08/29 15:30:15 adam
28 * Work on GRS records.
30 * Revision 1.14 1995/08/04 11:32:40 adam
31 * More work on output queue. Memory related routines moved
34 * Revision 1.13 1995/08/03 13:23:00 adam
37 * Revision 1.12 1995/07/28 10:28:38 adam
38 * First work on request queue.
40 * Revision 1.11 1995/06/20 08:07:35 adam
41 * New setting: failInfo.
42 * Working on better cancel mechanism.
44 * Revision 1.10 1995/06/16 12:28:20 adam
45 * Implemented preferredRecordSyntax.
46 * Minor changes in diagnostic handling.
47 * Record list deleted when connection closes.
49 * Revision 1.9 1995/06/14 15:08:01 adam
50 * Bug fix in cascade-target-list. Uses yaz-version.h.
52 * Revision 1.8 1995/06/14 13:37:18 adam
53 * Setting recordType implemented.
54 * Setting implementationVersion implemented.
55 * Settings implementationId / implementationName edited.
57 * Revision 1.7 1995/06/01 07:31:28 adam
58 * Rename of many typedefs -> IrTcl_...
60 * Revision 1.6 1995/05/31 08:36:40 adam
61 * Bug fix in client.tcl: didn't save options on clientrc.tcl.
62 * New method: referenceId. More work on scan.
64 * Revision 1.5 1995/05/29 08:44:25 adam
65 * Work on delete of objects.
67 * Revision 1.4 1995/05/26 11:44:10 adam
68 * Bugs fixed. More work on MARC utilities and queries. Test
69 * client is up-to-date again.
71 * Revision 1.3 1995/05/26 08:54:17 adam
72 * New MARC utilities. Uses prefix query.
74 * Revision 1.2 1995/05/24 14:10:23 adam
75 * Work on idAuthentication, protocolVersion and options.
77 * Revision 1.1 1995/05/23 15:34:49 adam
78 * Many new settings, userInformationField, smallSetUpperBound, etc.
79 * A number of settings are inherited when ir-set is executed.
80 * This version is incompatible with the graphical test client (client.tcl).
102 #include <yaz-version.h>
106 #include <diagbib1.h>
111 char **databaseNames;
112 int num_databaseNames;
114 enum oid_value *preferredRecordSyntax;
115 int replaceIndicator;
118 char *elementSetNames;
119 char *smallSetElementSetNames;
120 char *mediumSetElementSetNames;
122 int smallSetUpperBound;
123 int largeSetLowerBound;
124 int mediumSetPresentNumber;
137 int preferredMessageSize;
138 int maximumRecordSize;
140 Odr_bitmask protocolVersion;
142 char *idAuthenticationOpen;
143 char *idAuthenticationGroupId;
144 char *idAuthenticationUserId;
145 char *idAuthenticationPassword;
147 char *implementationName;
148 char *implementationId;
149 char *implementationVersion;
151 char *targetImplementationName;
152 char *targetImplementationId;
153 char *targetImplementationVersion;
154 char *userInformationField;
172 struct IrTcl_Request_ *request_queue;
174 IrTcl_SetCObj set_inher;
177 typedef struct IrTcl_Request_ {
178 struct IrTcl_Request_ *next;
193 struct GRS_Record_entry {
202 struct IrTcl_GRS_Record_ *sub;
213 typedef struct IrTcl_GRS_Record_ {
215 struct GRS_Record_entry *entries;
218 typedef struct IrTcl_RecordList_ {
227 IrTcl_GRS_Record *grs1;
233 IrTcl_Diagnostic *list;
234 } surrogateDiagnostics;
236 struct IrTcl_RecordList_ *next;
239 typedef struct IrTcl_SetObj_ {
244 int nextResultSetPosition;
247 int numberOfRecordsReturned;
249 char *recordElements;
252 int nonSurrogateDiagnosticNum;
253 IrTcl_Diagnostic *nonSurrogateDiagnosticList;
254 IrTcl_RecordList *record_list;
255 IrTcl_SetCObj set_inher;
258 typedef struct IrTcl_ScanEntry_ {
263 int globalOccurrences;
266 IrTcl_Diagnostic *list;
272 typedef struct IrTcl_ScanObj_ {
275 int numberOfTermsRequested;
276 int preferredPositionInResponse;
279 int numberOfEntriesReturned;
288 IrTcl_ScanEntry *entries;
289 IrTcl_Diagnostic *nonSurrogateDiagnosticList;
290 int nonSurrogateDiagnosticNum;
293 struct ir_named_entry {
298 int ir_tcl_get_marc (Tcl_Interp *interp, const char *buf,
299 int argc, char **argv);
300 int ir_tcl_send_APDU (Tcl_Interp *interp, IrTcl_Obj *p, Z_APDU *apdu,
301 const char *msg, const char *object_name);
302 int ir_tcl_send_q (IrTcl_Obj *p, IrTcl_Request *rq, const char *msg);
303 void ir_tcl_del_q (IrTcl_Obj *p);
304 void *ir_tcl_malloc (size_t size);
305 int ir_tcl_strdup (Tcl_Interp *interp, char** p, const char *s);
306 int ir_tcl_strdel (Tcl_Interp *interp, char **p);
308 char *ir_tcl_fread_marc (FILE *inf, size_t *size);
309 void ir_tcl_read_grs (Z_GenericRecord *r, IrTcl_GRS_Record **grs_record);
310 int ir_tcl_get_grs (Tcl_Interp *interp, IrTcl_GRS_Record *grs_record,
311 int argc, char **argv);
313 #define IR_TCL_FAIL_CONNECT 1
314 #define IR_TCL_FAIL_READ 2
315 #define IR_TCL_FAIL_WRITE 3
316 #define IR_TCL_FAIL_IN_APDU 4
317 #define IR_TCL_FAIL_UNKNOWN_APDU 5
319 #define IR_TCL_R_Idle 0
320 #define IR_TCL_R_Writing 1
321 #define IR_TCL_R_Waiting 2
322 #define IR_TCL_R_Reading 3
323 #define IR_TCL_R_Connecting 4