Added body-of-text to BIB-1 ANY and the WAIS profile
[yaz-moved-to-github.git] / asn / zget.c
1 /*
2  * Copyright (c) 1995, Index Data.
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: zget.c,v $
7  * Revision 1.10  1996-01-02 08:57:23  quinn
8  * Changed enums in the ASN.1 .h files to #defines. Changed oident.class to oclass
9  *
10  * Revision 1.9  1995/09/29  17:11:55  quinn
11  * Smallish
12  *
13  * Revision 1.8  1995/09/27  15:02:43  quinn
14  * Modified function heads & prototypes.
15  *
16  * Revision 1.7  1995/06/15  07:44:52  quinn
17  * Moving to v3.
18  *
19  * Revision 1.6  1995/06/14  15:26:37  quinn
20  * *** empty log message ***
21  *
22  * Revision 1.5  1995/06/07  14:42:30  quinn
23  * Fixed CLOSE
24  *
25  * Revision 1.4  1995/06/07  14:36:25  quinn
26  * Added CLOSE
27  *
28  * Revision 1.3  1995/06/05  10:52:06  quinn
29  * Fixed some negligences.
30  *
31  * Revision 1.2  1995/05/30  10:15:49  quinn
32  * Added our implementor's ID
33  *
34  * Revision 1.1  1995/05/22  11:30:20  quinn
35  * Adding Z39.50-1992 stuff to proto.c. Adding zget.c
36  *
37  *
38  */
39
40 #include <proto.h>
41
42 Z_InitRequest *zget_InitRequest(ODR o)
43 {
44     Z_InitRequest *r = odr_malloc(o, sizeof(*r));
45
46     r->referenceId = 0;
47     r->options = odr_malloc(o, sizeof(*r->options));
48     ODR_MASK_ZERO(r->options);
49     r->protocolVersion = odr_malloc(o, sizeof(*r->protocolVersion));
50     ODR_MASK_ZERO(r->protocolVersion);
51     r->preferredMessageSize = odr_malloc(o, sizeof(int));
52     *r->preferredMessageSize = 30*1024;
53     r->maximumRecordSize = odr_malloc(o, sizeof(int));
54     *r->maximumRecordSize = 30*1024;
55     r->idAuthentication = 0;
56     r->implementationId = "YAZ (id=81)";
57     r->implementationName = "Index Data/YAZ";
58     r->implementationVersion = YAZ_VERSION;
59     r->userInformationField = 0;
60 #ifdef Z_95
61     r->otherInfo = 0;
62 #endif
63     return r;
64 }
65
66 Z_InitResponse *zget_InitResponse(ODR o)
67 {
68     Z_InitResponse *r = odr_malloc(o, sizeof(*r));
69
70     r->referenceId = 0;
71     r->options = odr_malloc(o, sizeof(*r->options));
72     ODR_MASK_ZERO(r->options);
73     r->protocolVersion = odr_malloc(o, sizeof(*r->protocolVersion));
74     ODR_MASK_ZERO(r->protocolVersion);
75     r->preferredMessageSize = odr_malloc(o, sizeof(int));
76     *r->preferredMessageSize = 30*1024;
77     r->maximumRecordSize = odr_malloc(o, sizeof(int));
78     *r->maximumRecordSize = 30*1024;
79     r->result = odr_malloc(o, sizeof(bool_t));
80     *r->result = 1;
81     r->implementationId = "YAZ (id=81)";
82     r->implementationName = "Index Data/YAZ";
83     r->implementationVersion = YAZ_VERSION;
84     r->userInformationField = 0;
85 #ifdef Z_95
86     r->otherInfo = 0;
87 #endif
88     return r;
89 }
90
91 Z_SearchRequest *zget_SearchRequest(ODR o)
92 {
93     Z_SearchRequest *r = odr_malloc(o, sizeof(*r));
94
95     r->referenceId = 0;
96     r->smallSetUpperBound = odr_malloc(o, sizeof(int));
97     *r->smallSetUpperBound = 0;
98     r->largeSetLowerBound = odr_malloc(o, sizeof(int));
99     *r->largeSetLowerBound = 1;
100     r->mediumSetPresentNumber = odr_malloc(o, sizeof(int));
101     *r->mediumSetPresentNumber = 0;
102     r->replaceIndicator = odr_malloc(o, sizeof(bool_t));
103     *r->replaceIndicator = 1;
104     r->resultSetName = "Default";
105     r->num_databaseNames = 0;
106     r->databaseNames = 0;
107     r->smallSetElementSetNames = 0;
108     r->mediumSetElementSetNames = 0;
109     r->preferredRecordSyntax = 0;
110     r->query = 0;
111 #ifdef Z_95
112     r->additionalSearchInfo = 0;
113     r->otherInfo = 0;
114 #endif
115     return r;
116 }
117
118 Z_SearchResponse *zget_SearchResponse(ODR o)
119 {
120     Z_SearchResponse *r = odr_malloc(o, sizeof(*r));
121
122     r->referenceId = 0;
123     r->resultCount = odr_malloc(o, sizeof(int));
124     *r->resultCount = 0;
125     r->numberOfRecordsReturned = odr_malloc(o, sizeof(int));
126     *r->numberOfRecordsReturned = 0;
127     r->nextResultSetPosition = odr_malloc(o, sizeof(int));
128     *r->nextResultSetPosition = 0;
129     r->searchStatus = odr_malloc(o, sizeof(bool_t));
130     *r->searchStatus = 1;
131     r->resultSetStatus = 0;
132     r->presentStatus = 0;
133     r->records = 0;
134 #ifdef Z_95
135     r->additionalSearchInfo = 0;
136     r->otherInfo = 0;
137 #endif
138     return r;
139 }
140
141 Z_PresentRequest *zget_PresentRequest(ODR o)
142 {
143     Z_PresentRequest *r = odr_malloc(o, sizeof(*r));
144
145     r->referenceId = 0;
146     r->resultSetId = "Default";
147     r->resultSetStartPoint = odr_malloc(o, sizeof(int));
148     *r->resultSetStartPoint = 1;
149     r->numberOfRecordsRequested = odr_malloc(o, sizeof(int));
150     *r->numberOfRecordsRequested = 10;
151 #ifdef Z_95
152     r->num_ranges = 0;
153     r->additionalRanges = 0;
154     r->recordComposition = 0;
155 #else
156     r->elementSetNames = 0;
157 #endif
158     r->preferredRecordSyntax = 0;
159 #ifdef Z_95
160     r->maxSegmentCount = 0;
161     r->maxRecordSize = 0;
162     r->maxSegmentSize = 0;
163     r->otherInfo = 0;
164 #endif
165     return r;
166 }
167
168 Z_PresentResponse *zget_PresentResponse(ODR o)
169 {
170     Z_PresentResponse *r = odr_malloc(o, sizeof(*r));
171
172     r->referenceId = 0;
173     r->numberOfRecordsReturned = odr_malloc(o, sizeof(int));
174     *r->numberOfRecordsReturned = 0;
175     r->nextResultSetPosition = odr_malloc(o, sizeof(int));
176     *r->nextResultSetPosition = 0;
177     r->presentStatus = odr_malloc(o, sizeof(int));
178     *r->presentStatus = Z_PRES_SUCCESS;
179     r->records = 0;
180 #ifdef Z_95
181     r->otherInfo = 0;
182 #endif
183     return r;
184 }
185
186 Z_DeleteResultSetRequest *zget_DeleteResultSetRequest(ODR o)
187 {
188     Z_DeleteResultSetRequest *r = odr_malloc(o, sizeof(*r));
189
190     r->referenceId = 0;
191     r->deleteFunction = odr_malloc(o, sizeof(int));
192     *r->deleteFunction = Z_DeleteRequest_list;
193     r->num_ids = 0;
194     r->resultSetList = 0;
195 #ifdef Z_95
196     r->otherInfo = 0;
197 #endif
198     return r;
199 }
200
201 Z_DeleteResultSetResponse *zget_DeleteResultSetResponse(ODR o)
202 {
203     Z_DeleteResultSetResponse *r = odr_malloc(o, sizeof(*r));
204
205     r->referenceId = 0;
206     r->deleteOperationStatus = odr_malloc(o, sizeof(int));
207     *r->deleteOperationStatus = Z_DeleteStatus_success;
208     r->num_statuses = 0;
209     r->deleteListStatuses = 0;
210     r->numberNotDeleted = 0;
211     r->num_bulkStatuses = 0;
212     r->bulkStatuses = 0;
213     r->deleteMessage = 0;
214 #ifdef Z_95
215     r->otherInfo = 0;
216 #endif
217     return r;
218 }
219
220 Z_ScanRequest *zget_ScanRequest(ODR o)
221 {
222     Z_ScanRequest *r = odr_malloc(o, sizeof(*r));
223
224     r->referenceId = 0;
225     r->num_databaseNames = 0;
226     r->databaseNames = 0;
227     r->attributeSet = 0;
228     r->termListAndStartPoint = 0;
229     r->stepSize = 0;
230     r->numberOfTermsRequested = odr_malloc(o, sizeof(int));
231     *r->numberOfTermsRequested = 20;
232     r->preferredPositionInResponse = 0;
233 #ifdef Z_95
234     r->otherInfo = 0;
235 #endif
236     return r;
237 }
238
239 Z_ScanResponse *zget_ScanResponse(ODR o)
240 {
241     Z_ScanResponse *r = odr_malloc(o, sizeof(*r));
242
243     r->referenceId = 0;
244     r->stepSize = 0;
245     r->scanStatus = odr_malloc(o, sizeof(int));
246     *r->scanStatus = Z_Scan_success;
247     r->numberOfEntriesReturned = odr_malloc(o, sizeof(int));
248     *r->numberOfEntriesReturned = 0;
249     r->positionOfTerm =0;
250     r->entries = 0;
251     r->attributeSet = 0;
252 #ifdef Z_95
253     r->otherInfo = 0;
254 #endif
255     return r;
256 }
257
258 Z_TriggerResourceControlRequest *zget_TriggerResourceControlRequest(ODR o)
259 {
260     Z_TriggerResourceControlRequest *r = odr_malloc(o, sizeof(*r));
261
262     r->referenceId = 0;
263     r->requestedAction = odr_malloc(o, sizeof(int));
264     *r->requestedAction = Z_TriggerResourceCtrl_resourceReport;
265     r->prefResourceReportFormat = 0;
266     r->resultSetWanted = 0;
267 #ifdef Z_95
268     r->otherInfo = 0;
269 #endif
270     return r;
271 }
272
273 Z_ResourceControlRequest *zget_ResourceControlRequest(ODR o)
274 {
275     Z_ResourceControlRequest *r = odr_malloc(o, sizeof(*r));
276
277     r->referenceId = 0;
278     r->suspendedFlag = 0;
279     r->resourceReport = 0;
280     r->partialResultsAvailable = 0;
281     r->responseRequired = odr_malloc(o, sizeof(bool_t));
282     *r->responseRequired = 0;
283     r->triggeredRequestFlag = 0;
284 #ifdef Z_95
285     r->otherInfo = 0;
286 #endif
287     return r;
288 }
289
290 Z_ResourceControlResponse *zget_ResourceControlResponse(ODR o)
291 {
292     Z_ResourceControlResponse *r = odr_malloc(o, sizeof(*r));
293
294     r->referenceId = 0;
295     r->continueFlag = odr_malloc(o, sizeof(bool_t));
296     *r->continueFlag = 1;
297     r->resultSetWanted = 0;
298 #ifdef Z_95
299     r->otherInfo = 0;
300 #endif
301     return r;
302 }
303
304 Z_AccessControlRequest *zget_AccessControlRequest(ODR o)
305 {
306     Z_AccessControlRequest *r = odr_malloc(o, sizeof(*r));
307
308     r->referenceId = 0;
309     r->which = Z_AccessRequest_simpleForm;
310     r->u.simpleForm = 0;
311 #ifdef Z_95
312     r->otherInfo = 0;
313 #endif
314     return r;
315 }
316
317 Z_AccessControlResponse *zget_AccessControlResponse(ODR o)
318 {
319     Z_AccessControlResponse *r = odr_malloc(o, sizeof(*r));
320
321     r->referenceId = 0;
322     r->which = Z_AccessResponse_simpleForm;
323     r->u.simpleForm = 0;
324     r->diagnostic = 0;
325 #ifdef Z_95
326     r->otherInfo = 0;
327 #endif
328     return r;
329 }
330
331 Z_Segment *zget_Segment(ODR o)
332 {
333     Z_Segment *r = odr_malloc(o, sizeof(*r));
334
335     r->referenceId = 0;
336     r->numberOfRecordsReturned = odr_malloc(o, sizeof(int));
337     *r->numberOfRecordsReturned = 0;
338     r->num_segmentRecords = 0;
339     r->segmentRecords = 0;
340     r->otherInfo = 0;
341     return r;
342 }
343
344 Z_Close *zget_Close(ODR o)
345 {
346     Z_Close *r = odr_malloc(o, sizeof(*r));
347
348     r->referenceId = 0;
349     r->closeReason = odr_malloc(o, sizeof(int));
350     *r->closeReason = Z_Close_finished;
351     r->diagnosticInformation = 0;
352     r->resourceReportFormat = 0;
353     r->resourceReport = 0;
354 #ifdef Z_95
355     r->otherInfo = 0;
356 #endif
357     return r;
358 }
359
360 Z_APDU *zget_APDU(ODR o, int which)
361 {
362     Z_APDU *r = odr_malloc(o, sizeof(*r));
363     
364     switch (r->which = which)
365     {
366         case Z_APDU_initRequest:
367             r->u.initRequest = zget_InitRequest(o); break;
368         case Z_APDU_initResponse:
369             r->u.initResponse = zget_InitResponse(o); break;
370         case Z_APDU_searchRequest:      
371             r->u.searchRequest = zget_SearchRequest(o); break;
372         case Z_APDU_searchResponse:
373             r->u.searchResponse = zget_SearchResponse(o); break;
374         case Z_APDU_presentRequest:
375             r->u.presentRequest = zget_PresentRequest(o); break;
376         case Z_APDU_presentResponse:
377             r->u.presentResponse = zget_PresentResponse(o); break;
378         case Z_APDU_deleteResultSetRequest:
379             r->u.deleteResultSetRequest = zget_DeleteResultSetRequest(o); break;
380         case Z_APDU_deleteResultSetResponse:
381             r->u.deleteResultSetResponse = zget_DeleteResultSetResponse(o);
382             break;
383         case Z_APDU_scanRequest:
384             r->u.scanRequest = zget_ScanRequest(o); break;
385         case Z_APDU_scanResponse:
386             r->u.scanResponse = zget_ScanResponse(o); break;
387         case Z_APDU_triggerResourceControlRequest:
388             r->u.triggerResourceControlRequest =
389                 zget_TriggerResourceControlRequest(o); break;
390         case Z_APDU_resourceControlRequest:
391             r->u.resourceControlRequest = zget_ResourceControlRequest(o);
392             break;
393         case Z_APDU_resourceControlResponse:
394             r->u.resourceControlResponse = zget_ResourceControlResponse(o);
395             break;
396         case Z_APDU_segmentRequest:
397             r->u.segmentRequest = zget_Segment(o);
398             break;
399         case Z_APDU_close:
400             r->u.close = zget_Close(o);
401             break;
402         default:
403             fprintf(stderr, "Bad APDU-type to zget_APDU");
404             exit(1);
405     }
406     return r;
407 }