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