Directive s=pw sets structure to phrase if term includes blank(s).
[yaz-moved-to-github.git] / zutil / zget.c
1 /*
2  * Copyright (c) 1995-1999, Index Data.
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: zget.c,v $
7  * Revision 1.5  2001-03-13 18:11:38  adam
8  * Altered zget_ExtendedServicesRequest - sets waitAction to waitIfPossible.
9  *
10  * Revision 1.4  2001/02/21 13:46:54  adam
11  * C++ fixes.
12  *
13  * Revision 1.3  2000/03/20 19:06:25  adam
14  * Added Segment request for fronend server. Work on admin for client.
15  *
16  * Revision 1.2  1999/11/30 13:47:12  adam
17  * Improved installation. Moved header files to include/yaz.
18  *
19  * Revision 1.1  1999/06/08 10:10:16  adam
20  * New sub directory zutil. Moved YAZ Compiler to be part of YAZ tree.
21  *
22  * Revision 1.17  1999/04/20 09:56:48  adam
23  * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun).
24  * Modified all encoders/decoders to reflect this change.
25  *
26  * Revision 1.16  1998/08/19 16:10:05  adam
27  * Changed som member names of DeleteResultSetRequest/Response.
28  *
29  * Revision 1.15  1998/03/31 15:13:19  adam
30  * Development towards compiled ASN.1.
31  *
32  * Revision 1.14  1998/02/11 11:53:32  adam
33  * Changed code so that it compiles as C++.
34  *
35  * Revision 1.13  1998/01/29 13:13:39  adam
36  * Function zget_presentRequest fills resultSetId with "default" instead
37  * of "Default".
38  *
39  * Revision 1.12  1997/10/29 12:00:37  adam
40  * Routine zget_SearchRequest fills resultSetName member with "default"
41  * instead of "Default".
42  *
43  * Revision 1.11  1997/05/02 08:39:10  quinn
44  * New PDUs added, thanks to Ronald van der Meer
45  *
46  * Revision 1.10  1996/01/02 08:57:23  quinn
47  * Changed enums in the ASN.1 .h files to #defines. Changed oident.class to oclass
48  *
49  * Revision 1.9  1995/09/29  17:11:55  quinn
50  * Smallish
51  *
52  * Revision 1.8  1995/09/27  15:02:43  quinn
53  * Modified function heads & prototypes.
54  *
55  * Revision 1.7  1995/06/15  07:44:52  quinn
56  * Moving to v3.
57  *
58  * Revision 1.6  1995/06/14  15:26:37  quinn
59  * *** empty log message ***
60  *
61  * Revision 1.5  1995/06/07  14:42:30  quinn
62  * Fixed CLOSE
63  *
64  * Revision 1.4  1995/06/07  14:36:25  quinn
65  * Added CLOSE
66  *
67  * Revision 1.3  1995/06/05  10:52:06  quinn
68  * Fixed some negligences.
69  *
70  * Revision 1.2  1995/05/30  10:15:49  quinn
71  * Added our implementor's ID
72  *
73  * Revision 1.1  1995/05/22  11:30:20  quinn
74  * Adding Z39.50-1992 stuff to proto.c. Adding zget.c
75  *
76  *
77  */
78
79 #include <yaz/proto.h>
80
81 Z_InitRequest *zget_InitRequest(ODR o)
82 {
83     Z_InitRequest *r = (Z_InitRequest *)odr_malloc(o, sizeof(*r));
84
85     r->referenceId = 0;
86     r->options = (Odr_bitmask *)odr_malloc(o, sizeof(*r->options));
87     ODR_MASK_ZERO(r->options);
88     r->protocolVersion = (Odr_bitmask *)odr_malloc(o, sizeof(*r->protocolVersion));
89     ODR_MASK_ZERO(r->protocolVersion);
90     r->preferredMessageSize = (int *)odr_malloc(o, sizeof(int));
91     *r->preferredMessageSize = 30*1024;
92     r->maximumRecordSize = (int *)odr_malloc(o, sizeof(int));
93     *r->maximumRecordSize = 30*1024;
94     r->idAuthentication = 0;
95     r->implementationId = "YAZ (id=81)";
96     r->implementationName = "Index Data/YAZ";
97     r->implementationVersion = YAZ_VERSION;
98     r->userInformationField = 0;
99     r->otherInfo = 0;
100     return r;
101 }
102
103 Z_InitResponse *zget_InitResponse(ODR o)
104 {
105     Z_InitResponse *r = (Z_InitResponse *)odr_malloc(o, sizeof(*r));
106
107     r->referenceId = 0;
108     r->options = (Odr_bitmask *)odr_malloc(o, sizeof(*r->options));
109     ODR_MASK_ZERO(r->options);
110     r->protocolVersion = (Odr_bitmask *)odr_malloc(o, sizeof(*r->protocolVersion));
111     ODR_MASK_ZERO(r->protocolVersion);
112     r->preferredMessageSize = (int *)odr_malloc(o, sizeof(int));
113     *r->preferredMessageSize = 30*1024;
114     r->maximumRecordSize = (int *)odr_malloc(o, sizeof(int));
115     *r->maximumRecordSize = 30*1024;
116     r->result = (int *)odr_malloc(o, sizeof(bool_t));
117     *r->result = 1;
118     r->implementationId = "YAZ (id=81)";
119     r->implementationName = "Index Data/YAZ";
120     r->implementationVersion = YAZ_VERSION;
121     r->userInformationField = 0;
122     r->otherInfo = 0;
123     return r;
124 }
125
126 Z_SearchRequest *zget_SearchRequest(ODR o)
127 {
128     Z_SearchRequest *r = (Z_SearchRequest *)odr_malloc(o, sizeof(*r));
129
130     r->referenceId = 0;
131     r->smallSetUpperBound = (int *)odr_malloc(o, sizeof(int));
132     *r->smallSetUpperBound = 0;
133     r->largeSetLowerBound = (int *)odr_malloc(o, sizeof(int));
134     *r->largeSetLowerBound = 1;
135     r->mediumSetPresentNumber = (int *)odr_malloc(o, sizeof(int));
136     *r->mediumSetPresentNumber = 0;
137     r->replaceIndicator = (int *)odr_malloc(o, sizeof(bool_t));
138     *r->replaceIndicator = 1;
139     r->resultSetName = "default";
140     r->num_databaseNames = 0;
141     r->databaseNames = 0;
142     r->smallSetElementSetNames = 0;
143     r->mediumSetElementSetNames = 0;
144     r->preferredRecordSyntax = 0;
145     r->query = 0;
146     r->additionalSearchInfo = 0;
147     r->otherInfo = 0;
148     return r;
149 }
150
151 Z_SearchResponse *zget_SearchResponse(ODR o)
152 {
153     Z_SearchResponse *r = (Z_SearchResponse *)odr_malloc(o, sizeof(*r));
154
155     r->referenceId = 0;
156     r->resultCount = (int *)odr_malloc(o, sizeof(int));
157     *r->resultCount = 0;
158     r->numberOfRecordsReturned = (int *)odr_malloc(o, sizeof(int));
159     *r->numberOfRecordsReturned = 0;
160     r->nextResultSetPosition = (int *)odr_malloc(o, sizeof(int));
161     *r->nextResultSetPosition = 0;
162     r->searchStatus = (int *)odr_malloc(o, sizeof(bool_t));
163     *r->searchStatus = 1;
164     r->resultSetStatus = 0;
165     r->presentStatus = 0;
166     r->records = 0;
167     r->additionalSearchInfo = 0;
168     r->otherInfo = 0;
169     return r;
170 }
171
172 Z_PresentRequest *zget_PresentRequest(ODR o)
173 {
174     Z_PresentRequest *r = (Z_PresentRequest *)odr_malloc(o, sizeof(*r));
175
176     r->referenceId = 0;
177     r->resultSetId = "default";
178     r->resultSetStartPoint = (int *)odr_malloc(o, sizeof(int));
179     *r->resultSetStartPoint = 1;
180     r->numberOfRecordsRequested = (int *)odr_malloc(o, sizeof(int));
181     *r->numberOfRecordsRequested = 10;
182     r->num_ranges = 0;
183     r->additionalRanges = 0;
184     r->recordComposition = 0;
185     r->preferredRecordSyntax = 0;
186     r->maxSegmentCount = 0;
187     r->maxRecordSize = 0;
188     r->maxSegmentSize = 0;
189     r->otherInfo = 0;
190     return r;
191 }
192
193 Z_PresentResponse *zget_PresentResponse(ODR o)
194 {
195     Z_PresentResponse *r = (Z_PresentResponse *)odr_malloc(o, sizeof(*r));
196
197     r->referenceId = 0;
198     r->numberOfRecordsReturned = (int *)odr_malloc(o, sizeof(int));
199     *r->numberOfRecordsReturned = 0;
200     r->nextResultSetPosition = (int *)odr_malloc(o, sizeof(int));
201     *r->nextResultSetPosition = 0;
202     r->presentStatus = (int *)odr_malloc(o, sizeof(int));
203     *r->presentStatus = Z_PRES_SUCCESS;
204     r->records = 0;
205     r->otherInfo = 0;
206     return r;
207 }
208
209 Z_DeleteResultSetRequest *zget_DeleteResultSetRequest(ODR o)
210 {
211     Z_DeleteResultSetRequest *r = (Z_DeleteResultSetRequest *)
212         odr_malloc(o, sizeof(*r));
213
214     r->referenceId = 0;
215     r->deleteFunction = (int *)odr_malloc(o, sizeof(int));
216     *r->deleteFunction = Z_DeleteRequest_list;
217     r->num_resultSetList = 0;
218     r->resultSetList = 0;
219     r->otherInfo = 0;
220     return r;
221 }
222
223 Z_DeleteResultSetResponse *zget_DeleteResultSetResponse(ODR o)
224 {
225     Z_DeleteResultSetResponse *r = (Z_DeleteResultSetResponse *)
226         odr_malloc(o, sizeof(*r));
227     
228     r->referenceId = 0;
229     r->deleteOperationStatus = (int *)odr_malloc(o, sizeof(int));
230     *r->deleteOperationStatus = Z_DeleteStatus_success;
231     r->deleteListStatuses = 0;
232     r->numberNotDeleted = 0;
233     r->bulkStatuses = 0;
234     r->deleteMessage = 0;
235     r->otherInfo = 0;
236     return r;
237 }
238
239 Z_ScanRequest *zget_ScanRequest(ODR o)
240 {
241     Z_ScanRequest *r = (Z_ScanRequest *)odr_malloc(o, sizeof(*r));
242     
243     r->referenceId = 0;
244     r->num_databaseNames = 0;
245     r->databaseNames = 0;
246     r->attributeSet = 0;
247     r->termListAndStartPoint = 0;
248     r->stepSize = 0;
249     r->numberOfTermsRequested = (int *)odr_malloc(o, sizeof(int));
250     *r->numberOfTermsRequested = 20;
251     r->preferredPositionInResponse = 0;
252     r->otherInfo = 0;
253     return r;
254 }
255
256 Z_ScanResponse *zget_ScanResponse(ODR o)
257 {
258     Z_ScanResponse *r = (Z_ScanResponse *)odr_malloc(o, sizeof(*r));
259     
260     r->referenceId = 0;
261     r->stepSize = 0;
262     r->scanStatus = (int *)odr_malloc(o, sizeof(int));
263     *r->scanStatus = Z_Scan_success;
264     r->numberOfEntriesReturned = (int *)odr_malloc(o, sizeof(int));
265     *r->numberOfEntriesReturned = 0;
266     r->positionOfTerm =0;
267     r->entries = 0;
268     r->attributeSet = 0;
269     r->otherInfo = 0;
270     return r;
271 }
272
273 Z_TriggerResourceControlRequest *zget_TriggerResourceControlRequest(ODR o)
274 {
275     Z_TriggerResourceControlRequest *r = (Z_TriggerResourceControlRequest *)
276         odr_malloc(o, sizeof(*r));
277     
278     r->referenceId = 0;
279     r->requestedAction = (int *)odr_malloc(o, sizeof(int));
280     *r->requestedAction = Z_TriggerResourceCtrl_resourceReport;
281     r->prefResourceReportFormat = 0;
282     r->resultSetWanted = 0;
283     r->otherInfo = 0;
284     return r;
285 }
286
287 Z_ResourceControlRequest *zget_ResourceControlRequest(ODR o)
288 {
289     Z_ResourceControlRequest *r = (Z_ResourceControlRequest *)
290         odr_malloc(o, sizeof(*r));
291
292     r->referenceId = 0;
293     r->suspendedFlag = 0;
294     r->resourceReport = 0;
295     r->partialResultsAvailable = 0;
296     r->responseRequired = (int *)odr_malloc(o, sizeof(bool_t));
297     *r->responseRequired = 0;
298     r->triggeredRequestFlag = 0;
299     r->otherInfo = 0;
300     return r;
301 }
302
303 Z_ResourceControlResponse *zget_ResourceControlResponse(ODR o)
304 {
305     Z_ResourceControlResponse *r = (Z_ResourceControlResponse *)
306         odr_malloc(o, sizeof(*r));
307
308     r->referenceId = 0;
309     r->continueFlag = (int *)odr_malloc(o, sizeof(bool_t));
310     *r->continueFlag = 1;
311     r->resultSetWanted = 0;
312     r->otherInfo = 0;
313     return r;
314 }
315
316 Z_AccessControlRequest *zget_AccessControlRequest(ODR o)
317 {
318     Z_AccessControlRequest *r = (Z_AccessControlRequest *)
319         odr_malloc(o, sizeof(*r));
320
321     r->referenceId = 0;
322     r->which = Z_AccessRequest_simpleForm;
323     r->u.simpleForm = 0;
324     r->otherInfo = 0;
325     return r;
326 }
327
328 Z_AccessControlResponse *zget_AccessControlResponse(ODR o)
329 {
330     Z_AccessControlResponse *r = (Z_AccessControlResponse *)
331         odr_malloc(o, sizeof(*r));
332
333     r->referenceId = 0;
334     r->which = Z_AccessResponse_simpleForm;
335     r->u.simpleForm = 0;
336     r->diagnostic = 0;
337     r->otherInfo = 0;
338     return r;
339 }
340
341 Z_Segment *zget_Segment(ODR o)
342 {
343     Z_Segment *r = (Z_Segment *)odr_malloc(o, sizeof(*r));
344
345     r->referenceId = 0;
346     r->numberOfRecordsReturned = (int *)odr_malloc(o, sizeof(int));
347     *r->numberOfRecordsReturned = 0;
348     r->num_segmentRecords = 0;
349     r->segmentRecords = (Z_NamePlusRecord **) odr_nullval();
350     r->otherInfo = 0;
351     return r;
352 }
353
354 Z_Close *zget_Close(ODR o)
355 {
356     Z_Close *r = (Z_Close *)odr_malloc(o, sizeof(*r));
357
358     r->referenceId = 0;
359     r->closeReason = (int *)odr_malloc(o, sizeof(int));
360     *r->closeReason = Z_Close_finished;
361     r->diagnosticInformation = 0;
362     r->resourceReportFormat = 0;
363     r->resourceReport = 0;
364     r->otherInfo = 0;
365     return r;
366 }
367
368 Z_ResourceReportRequest *zget_ResourceReportRequest(ODR o)
369 {
370     Z_ResourceReportRequest *r = (Z_ResourceReportRequest *)
371         odr_malloc(o, sizeof(*r));
372
373     r->referenceId = 0;
374     r->opId = 0;
375     r->prefResourceReportFormat = 0;
376     r->otherInfo = 0;
377     return r;
378 }
379
380 Z_ResourceReportResponse *zget_ResourceReportResponse(ODR o)
381 {
382     Z_ResourceReportResponse *r = (Z_ResourceReportResponse *)
383         odr_malloc(o, sizeof(*r));
384
385     r->referenceId = 0;
386     r->resourceReportStatus = (int *)odr_malloc(o, sizeof(int));
387     *r->resourceReportStatus = Z_ResourceReportStatus_success;
388     r->resourceReport = 0;
389     r->otherInfo = 0;
390     return r;
391 }
392
393 Z_SortRequest *zget_SortRequest(ODR o)
394 {
395     Z_SortRequest *r = (Z_SortRequest *)odr_malloc(o, sizeof(*r));
396
397     r->referenceId = 0;
398     r->inputResultSetNames = 0;
399     r->sortedResultSetName = 0;
400     r->sortSequence = 0;
401     r->otherInfo = 0;
402     return r;
403 }
404
405 Z_SortResponse *zget_SortResponse(ODR o)
406 {
407     Z_SortResponse *r = (Z_SortResponse *)odr_malloc(o, sizeof(*r));
408
409     r->referenceId = 0;
410     r->sortStatus = (int *)odr_malloc(o, sizeof(int));
411     *r->sortStatus = Z_SortStatus_success;
412     r->resultSetStatus = (int *)odr_malloc(o, sizeof(int));
413     *r->resultSetStatus = Z_SortResultSetStatus_empty;
414     r->diagnostics = 0;
415     r->otherInfo = 0;
416     return r;
417 }
418
419 Z_ExtendedServicesRequest *zget_ExtendedServicesRequest(ODR o)
420 {
421     Z_ExtendedServicesRequest *r = (Z_ExtendedServicesRequest *)
422         odr_malloc(o, sizeof(*r));
423
424     r->referenceId = 0;
425     r->function = (int *)odr_malloc(o, sizeof(int));
426     *r->function = Z_ExtendedServicesRequest_create;
427     r->packageType = 0;
428     r->packageName = 0;
429     r->userId = 0;
430     r->retentionTime = 0;
431     r->permissions = 0;
432     r->description = 0;
433     r->taskSpecificParameters = 0;
434     r->waitAction = (int *)odr_malloc(o, sizeof(int));
435     *r->waitAction = Z_ExtendedServicesRequest_waitIfPossible;
436     r->elements = 0;
437     r->otherInfo = 0;
438     return r;
439 }
440
441 Z_ExtendedServicesResponse *zget_ExtendedServicesResponse(ODR o)
442 {
443     Z_ExtendedServicesResponse *r = (Z_ExtendedServicesResponse *)
444         odr_malloc(o, sizeof(*r));
445
446     r->referenceId = 0;
447     r->operationStatus = (int *)odr_malloc(o, sizeof(int));
448     *r->operationStatus = Z_ExtendedServicesResponse_done;
449     r->num_diagnostics = 0;
450     r->diagnostics = 0;
451     r->taskPackage = 0;
452     r->otherInfo = 0;
453     return r;
454 }
455
456 Z_APDU *zget_APDU(ODR o, int which)
457 {
458     Z_APDU *r = (Z_APDU *)odr_malloc(o, sizeof(*r));
459
460     switch (r->which = which)
461     {
462         case Z_APDU_initRequest:
463             r->u.initRequest = zget_InitRequest(o);
464             break;
465         case Z_APDU_initResponse:
466             r->u.initResponse = zget_InitResponse(o);
467             break;
468         case Z_APDU_searchRequest:
469             r->u.searchRequest = zget_SearchRequest(o);
470             break;
471         case Z_APDU_searchResponse:
472             r->u.searchResponse = zget_SearchResponse(o);
473             break;
474         case Z_APDU_presentRequest:
475             r->u.presentRequest = zget_PresentRequest(o);
476             break;
477         case Z_APDU_presentResponse:
478             r->u.presentResponse = zget_PresentResponse(o);
479             break;
480         case Z_APDU_deleteResultSetRequest:
481             r->u.deleteResultSetRequest = zget_DeleteResultSetRequest(o);
482             break;
483         case Z_APDU_deleteResultSetResponse:
484             r->u.deleteResultSetResponse = zget_DeleteResultSetResponse(o);
485             break;
486         case Z_APDU_scanRequest:
487             r->u.scanRequest = zget_ScanRequest(o);
488             break;
489         case Z_APDU_scanResponse:
490             r->u.scanResponse = zget_ScanResponse(o);
491             break;
492         case Z_APDU_triggerResourceControlRequest:
493             r->u.triggerResourceControlRequest =
494                 zget_TriggerResourceControlRequest(o);
495             break;
496         case Z_APDU_resourceControlRequest:
497             r->u.resourceControlRequest = zget_ResourceControlRequest(o);
498             break;
499         case Z_APDU_resourceControlResponse:
500             r->u.resourceControlResponse = zget_ResourceControlResponse(o);
501             break;
502         case Z_APDU_segmentRequest:
503             r->u.segmentRequest = zget_Segment(o);
504             break;
505         case Z_APDU_close:
506             r->u.close = zget_Close(o);
507             break;
508         case Z_APDU_accessControlRequest:
509             r->u.accessControlRequest = zget_AccessControlRequest(o);
510             break;
511         case Z_APDU_accessControlResponse:
512             r->u.accessControlResponse = zget_AccessControlResponse(o);
513             break;
514         case Z_APDU_resourceReportRequest:
515             r->u.resourceReportRequest = zget_ResourceReportRequest(o);
516             break;
517         case Z_APDU_resourceReportResponse:
518             r->u.resourceReportResponse = zget_ResourceReportResponse(o);
519             break;
520         case Z_APDU_sortRequest:
521             r->u.sortRequest = zget_SortRequest(o);
522             break;
523         case Z_APDU_sortResponse:
524             r->u.sortResponse = zget_SortResponse(o);
525             break;
526         case Z_APDU_extendedServicesRequest:
527             r->u.extendedServicesRequest = zget_ExtendedServicesRequest(o);
528             break;
529         case Z_APDU_extendedServicesResponse:
530             r->u.extendedServicesResponse = zget_ExtendedServicesResponse(o);
531             break;
532         default:
533             fprintf(stderr, "Bad APDU-type to zget_APDU");
534             exit(1);
535     }
536     return r;
537 }