YAZ 5.35.1
prt-ext.c
Go to the documentation of this file.
1/* This file is part of the YAZ toolkit.
2 * Copyright (C) Index Data
3 * See the file LICENSE for details.
4 */
9#if HAVE_CONFIG_H
10#include <config.h>
11#endif
12
13#include <yaz/proto.h>
14
15#include <yaz/oid_db.h>
16#include "odr-priv.h"
17#define PRT_EXT_DEBUG 0
18
19#if PRT_EXT_DEBUG
20#include <yaz/log.h>
21#endif
22
23/*
24 * The table below should be moved to the ODR structure itself and
25 * be an image of the association context: To help
26 * map indirect references when they show up.
27 */
29{
30 {{1, 2, 840, 10003, 5, 101,-1}, Z_External_sutrs, (Odr_fun) z_SUTRS},
31 {{1, 2, 840, 10003, 5, 100,-1}, Z_External_explainRecord, (Odr_fun)z_ExplainRecord},
32 {{1, 2, 840, 10003, 7, 1,-1}, Z_External_resourceReport1, (Odr_fun)z_ResourceReport1},
33 {{1, 2, 840, 10003, 7, 2,-1}, Z_External_resourceReport2, (Odr_fun)z_ResourceReport2},
34 {{1, 2, 840, 10003, 8, 1,-1}, Z_External_promptObject1, (Odr_fun)z_PromptObject1 },
35 {{1, 2, 840, 10003, 5, 105,-1}, Z_External_grs1, (Odr_fun)z_GenericRecord},
36 {{1, 2, 840, 10003, 5, 106,-1}, Z_External_extendedService, (Odr_fun)z_TaskPackage},
37 {{1, 2, 840, 10003, 9, 4,-1}, Z_External_itemOrder, (Odr_fun)z_IOItemOrder},
38 {{1, 2, 840, 10003, 4, 2,-1}, Z_External_diag1, (Odr_fun)z_DiagnosticFormat},
39 {{1, 2, 840, 10003, 11, 1,-1}, Z_External_espec1, (Odr_fun)z_Espec1},
40 {{1, 2, 840, 10003, 5, 103,-1}, Z_External_summary, (Odr_fun)z_BriefBib},
41 {{1, 2, 840, 10003, 5, 102,-1}, Z_External_OPAC, (Odr_fun)z_OPACRecord},
42 {{1, 2, 840, 10003, 10, 1,-1}, Z_External_searchResult1, (Odr_fun)z_SearchInfoReport},
43 {{1, 2, 840, 10003, 9, 5,-1}, Z_External_update0, (Odr_fun)z_IU0Update},
44 {{1, 2, 840, 10003, 9, 5, 1,-1}, Z_External_update0, (Odr_fun)z_IU0Update},
45 {{1, 2, 840, 10003, 9, 5, 1, 1,-1}, Z_External_update, (Odr_fun)z_IUUpdate},
46 {{1, 2, 840, 10003, 10, 6,-1}, Z_External_dateTime, (Odr_fun)z_DateTime},
47 {{1, 2, 840, 10003, 7, 1000, 81, 1,-1}, Z_External_universeReport,(Odr_fun)z_UniverseReport},
48 {{1, 2, 840, 10003, 9, 1000, 81, 1,-1}, Z_External_ESAdmin, (Odr_fun)z_Admin},
49 {{1, 2, 840, 10003, 10, 3,-1}, Z_External_userInfo1, (Odr_fun) z_OtherInformation},
50 {{1, 2, 840, 10003, 10, 1000, 81, 5,-1}, Z_External_userFacets, (Odr_fun) z_FacetList},
51 {{1, 2, 840, 10003, 15, 3,-1}, Z_External_charSetandLanguageNegotiation, (Odr_fun)
53 {{1, 2, 840, 10003, 8, 1,-1}, Z_External_acfPrompt1, (Odr_fun) z_PromptObject1},
54 {{1, 2, 840, 10003, 8, 2,-1}, Z_External_acfDes1, (Odr_fun) z_DES_RN_Object},
55 {{1, 2, 840, 10003, 8, 3,-1}, Z_External_acfKrb1, (Odr_fun) z_KRBObject},
56 {{1, 2, 840, 10003, 10, 5,-1}, Z_External_multisrch2, (Odr_fun) z_MultipleSearchTerms_2},
57 {{1, 2, 840, 10003, 16, 2, -1}, Z_External_CQL, (Odr_fun) z_InternationalString},
58 {{1, 2, 840, 10003, 9, 1,-1}, Z_External_persistentResultSet, (Odr_fun)z_PRPersistentResultSet},
59 {{1, 2, 840, 10003, 9, 2,-1}, Z_External_persistentQuery, (Odr_fun)z_PQueryPersistentQuery},
61 {{1, 2, 840, 10003, 9, 6,-1}, Z_External_exportSpecification, (Odr_fun)z_ESExportSpecification},
62 {{1, 2, 840, 10003, 9, 7,-1}, Z_External_exportInvocation, (Odr_fun)z_EIExportInvocation},
63 {{-1}, 0, 0}
64};
65
67{
69
70 for (p = type_table; p->oid[0] != -1; p++)
71 if (!oid_oidcmp(oid, p->oid))
72 return p;
73 return 0;
74}
75
95int z_External(ODR o, Z_External **p, int opt, const char *name)
96{
98
99 static Odr_arm arm[] =
100 {
102 (Odr_fun)odr_any, 0},
108 (Odr_fun)z_SUTRS, 0},
111
122
128 (Odr_fun)z_Espec1, 0},
130 (Odr_fun)z_BriefBib, 0},
133
137 (Odr_fun)z_IUUpdate, 0},
139 (Odr_fun)z_DateTime, 0},
143 (Odr_fun)z_Admin, 0},
144
146 (Odr_fun)z_IU0Update, 0},
150 (Odr_fun)z_FacetList, "FacetList" },
157
159 (Odr_fun)z_KRBObject, 0},
168
177 {-1, -1, -1, -1, 0, 0}
178 };
179
181 if (!odr_sequence_begin(o, p, sizeof(**p), name))
182 return opt && odr_ok(o);
183 if (!(odr_oid(o, &(*p)->direct_reference, 1, 0) &&
184 odr_integer(o, &(*p)->indirect_reference, 1, 0) &&
185 odr_graphicstring(o, &(*p)->descriptor, 1, 0)))
186 return 0;
187#if PRT_EXT_DEBUG
188 /* debugging purposes only */
189 if (o->direction == ODR_DECODE)
190 {
191 yaz_log(YLOG_LOG, "z_external decode");
192 if ((*p)->direct_reference)
193 {
194 yaz_log(YLOG_LOG, "direct reference");
195 if ((oid = oid_getentbyoid((*p)->direct_reference)))
196 {
197 yaz_log(YLOG_LOG, "oid %s", oid->desc);
198 if ((type = z_ext_getentbyref(oid->value)))
199 yaz_log(YLOG_LOG, "type");
200 }
201 }
202 }
203#endif
204 /* Do we know this beast? */
205 if (o->direction == ODR_DECODE && (*p)->direct_reference &&
206 (type = z_ext_getentbyref((*p)->direct_reference)))
207 {
208 int zclass, tag, cons;
209 /* OID is present and we know it */
210
211 if (!odr_peektag(o, &zclass, &tag, &cons))
212 return opt && odr_ok(o);
213#if PRT_EXT_DEBUG
214 yaz_log(YLOG_LOG, "odr_peektag OK tag=%d cons=%d zclass=%d what=%d",
215 tag, cons, zclass, type->what);
216#endif
217 if (zclass == ODR_CONTEXT && tag == 1 && cons == 0)
218 {
219 /* we have an OCTET STRING. decode BER contents from it */
220 const char *o_bp;
221 char *o_buf;
222 int o_size;
223 char *voidp = 0;
224 Odr_oct *oct;
225 int r;
226 if (!odr_implicit_tag(o, odr_octetstring, &oct,
227 ODR_CONTEXT, 1, 0, "octetaligned"))
228 return 0;
229
230 /* Save our decoding ODR members */
231 o_bp = o->op->bp;
232 o_buf = o->op->buf;
233 o_size = o->op->size;
234
235 /* Set up the OCTET STRING buffer */
236 o->op->bp = o->op->buf = oct->buf;
237 o->op->size = oct->len;
238
239 /* and decode that */
240 r = (*type->fun)(o, &voidp, 0, 0);
241 (*p)->which = type->what;
242 (*p)->u.single_ASN1_type = (Odr_any*) voidp;
243
244 /* Restore our decoding ODR member */
245 o->op->bp = o_bp;
246 o->op->buf = o_buf;
247 o->op->size = o_size;
248
249 return r && odr_sequence_end(o);
250 }
251 if (zclass == ODR_CONTEXT && tag == 0 && cons == 1)
252 {
253 /* It's single ASN.1 type, bias the CHOICE. */
254 odr_choice_bias(o, type->what);
255 }
256 }
257 return
258 odr_choice(o, arm, &(*p)->u, &(*p)->which, name) &&
260}
261
263 const char *buf, int len)
264{
265 Z_External *thisext;
266
267 if (!oid)
268 return 0;
269 thisext = (Z_External *) nmem_malloc(nmem, sizeof(*thisext));
270 thisext->descriptor = 0;
271 thisext->indirect_reference = 0;
272 thisext->direct_reference = odr_oiddup_nmem(nmem, oid);
273
274 if (len < 0) /* Structured data */
275 {
276 /*
277 * We cheat on the pointers here. Obviously, the record field
278 * of the backend-fetch structure should have been a union for
279 * correctness, but we're stuck with this for backwards
280 * compatibility.
281 */
282 thisext->u.grs1 = (Z_GenericRecord*) buf;
283
285 {
286 thisext->which = Z_External_sutrs;
287 }
288 else if (!oid_oidcmp(oid, yaz_oid_recsyn_grs_1))
289 {
290 thisext->which = Z_External_grs1;
291 }
292 else if (!oid_oidcmp(oid, yaz_oid_recsyn_explain))
293 {
295 }
296 else if (!oid_oidcmp(oid, yaz_oid_recsyn_summary))
297 {
298 thisext->which = Z_External_summary;
299 }
300 else if (!oid_oidcmp(oid, yaz_oid_recsyn_opac))
301 {
302 thisext->which = Z_External_OPAC;
303 }
304 else if (!oid_oidcmp(oid, yaz_oid_recsyn_extended))
305 {
307 }
308 else
309 {
310 return 0;
311 }
312 }
313 else if (!oid_oidcmp(oid, yaz_oid_recsyn_sutrs))
314 { /* SUTRS is a single-ASN.1-type */
315 Odr_oct *sutrs = (Odr_oct *)nmem_malloc(nmem, sizeof(*sutrs));
316
317 thisext->which = Z_External_sutrs;
318 thisext->u.sutrs = sutrs;
319 sutrs->buf = (char *)nmem_malloc(nmem, len);
320 sutrs->len = len;
321 memcpy(sutrs->buf, buf, len);
322 }
323 else
324 {
325 thisext->which = Z_External_octet;
326 if (!(thisext->u.octet_aligned = (Odr_oct *)
327 nmem_malloc(nmem, sizeof(Odr_oct))))
328 return 0;
329 if (!(thisext->u.octet_aligned->buf = (char *)
330 nmem_malloc(nmem, len)))
331 return 0;
332 memcpy(thisext->u.octet_aligned->buf, buf, len);
333 thisext->u.octet_aligned->len = len;
334 }
335 return thisext;
336}
337
339 const char *buf, int len)
340{
341 return z_ext_record_oid_nmem(o->mem, oid, buf, len);
342}
343
345 const char *buf, int len)
346{
347 Z_External *thisext;
348
349 if (!oid)
350 return 0;
351 thisext = (Z_External *) odr_malloc(o, sizeof(*thisext));
352 thisext->descriptor = 0;
353 thisext->indirect_reference = 0;
354 thisext->direct_reference = odr_oiddup(o, oid);
355
356 thisext->which = Z_External_single;
357 thisext->u.single_ASN1_type = (Odr_any *) odr_malloc(o, sizeof(Odr_any));
358 if (!thisext->u.single_ASN1_type)
359 return 0;
360 thisext->u.single_ASN1_type->buf = (char *) odr_malloc(o, len);
361 if (!thisext->u.single_ASN1_type->buf)
362 return 0;
363 memcpy(thisext->u.single_ASN1_type->buf, buf, len);
364 thisext->u.single_ASN1_type->len = len;
365 return thisext;
366}
367
368Z_External *z_ext_record_xml(ODR o, const char *buf, int len)
369{
370 return z_ext_record_oid(o, yaz_oid_recsyn_xml, buf, len);
371}
372
373Z_External *z_ext_record_sutrs(ODR o, const char *buf, int len)
374{
375 return z_ext_record_oid(o, yaz_oid_recsyn_sutrs, buf, len);
376}
377
378Z_External *z_ext_record_usmarc(ODR o, const char *buf, int len)
379{
380 return z_ext_record_oid(o, yaz_oid_recsyn_usmarc, buf, len);
381}
382
383/*
384 * Local variables:
385 * c-basic-offset: 4
386 * c-file-style: "Stroustrup"
387 * indent-tabs-mode: nil
388 * End:
389 * vim: shiftwidth=4 tabstop=8 expandtab
390 */
391
int opt
Definition initopt.c:19
char * name
Definition initopt.c:18
enum l_file_type type
Definition log.c:47
void yaz_log(int level, const char *fmt,...)
Writes log message.
Definition log.c:487
Logging utility.
#define YLOG_LOG
log level: log (regular)
Definition log.h:48
void * nmem_malloc(NMEM n, size_t size)
allocates memory block on NMEM handle
Definition nmem.c:145
Internal ODR definitions.
#define ODR_EXTERNAL
Definition odr.h:80
#define ODR_DECODE
Definition odr.h:95
#define ODR_EXPLICIT
Definition odr.h:60
#define odr_ok(o)
Definition odr.h:215
#define ODR_UNIVERSAL
Definition odr.h:65
#define ODR_IMPLICIT
Definition odr.h:59
#define ODR_CONTEXT
Definition odr.h:67
int(* Odr_fun)(ODR, char **, int, const char *)
Definition odr.h:135
#define odr_implicit_tag(o, t, p, cl, tg, opt, name)
Definition odr.h:192
int odr_any(ODR o, Odr_any **p, int opt, const char *name)
Definition odr_any.c:23
int odr_bitstring(ODR o, Odr_bitmask **p, int opt, const char *name)
Definition odr_bit.c:22
void odr_choice_bias(ODR o, int what)
Definition odr_choice.c:90
int odr_choice(ODR o, Odr_arm arm[], void *p, void *whichp, const char *name)
Definition odr_choice.c:17
int odr_integer(ODR o, Odr_int **p, int opt, const char *name)
Definition odr_int.c:19
void * odr_malloc(ODR o, size_t size)
Definition odr_mem.c:31
int odr_octetstring(ODR o, Odr_oct **p, int opt, const char *name)
Definition odr_oct.c:19
int odr_oid(ODR o, Odr_oid **p, int opt, const char *name)
Definition odr_oid.c:20
int odr_sequence_end(ODR o)
Definition odr_seq.c:61
int odr_sequence_begin(ODR o, void *p, int size, const char *name)
Definition odr_seq.c:15
int odr_peektag(ODR o, int *zclass, int *tag, int *cons)
Definition odr_tag.c:15
int odr_implicit_settag(ODR o, int zclass, int tag)
Definition odr_tag.c:32
int odr_graphicstring(ODR o, char **p, int opt, const char *name)
Definition odr_use.c:57
Odr_oid * odr_oiddup(ODR odr, const Odr_oid *o)
Definition odr_util.c:60
Odr_oid * odr_oiddup_nmem(NMEM nmem, const Odr_oid *o)
Definition odr_util.c:47
Header for OID database.
const Odr_oid yaz_oid_recsyn_sutrs[]
Definition oid_std.c:68
const Odr_oid yaz_oid_recsyn_summary[]
Definition oid_std.c:70
const Odr_oid yaz_oid_recsyn_explain[]
Definition oid_std.c:67
const Odr_oid yaz_oid_recsyn_grs_1[]
Definition oid_std.c:72
const Odr_oid yaz_oid_recsyn_xml[]
Definition oid_std.c:89
const Odr_oid yaz_oid_recsyn_extended[]
Definition oid_std.c:73
const Odr_oid yaz_oid_recsyn_opac[]
Definition oid_std.c:69
const Odr_oid yaz_oid_recsyn_usmarc[]
Definition oid_std.c:43
int oid_oidcmp(const Odr_oid *o1, const Odr_oid *o2)
compares OIDs
Definition oid_util.c:34
short Odr_oid
Definition oid_util.h:42
Header for Z39.50 Protocol.
Z_External * z_ext_record_oid(ODR o, const Odr_oid *oid, const char *buf, int len)
encodes EXTERNAL record based on OID (NULL if not known)
Definition prt-ext.c:338
Z_ext_typeent * z_ext_getentbyref(const Odr_oid *oid)
returns type information for OID (NULL if not known)
Definition prt-ext.c:66
Z_External * z_ext_record_oid_any(ODR o, const Odr_oid *oid, const char *buf, int len)
encodes EXTERNAL record as ANY
Definition prt-ext.c:344
Z_External * z_ext_record_oid_nmem(NMEM nmem, const Odr_oid *oid, const char *buf, int len)
encodes EXTERNAL record based on OID (NULL if not known)
Definition prt-ext.c:262
Z_External * z_ext_record_xml(ODR o, const char *buf, int len)
encodes EXTERNAL XML record
Definition prt-ext.c:368
Z_External * z_ext_record_usmarc(ODR o, const char *buf, int len)
encodes EXTERNAL USMARC/MARC21 record
Definition prt-ext.c:378
static Z_ext_typeent type_table[]
Definition prt-ext.c:28
int z_External(ODR o, Z_External **p, int opt, const char *name)
codec for BER EXTERNAL
Definition prt-ext.c:95
Z_External * z_ext_record_sutrs(ODR o, const char *buf, int len)
encodes EXTERNAL SUTRS record
Definition prt-ext.c:373
#define Z_External_acfKrb1
Definition prt-ext.h:91
#define Z_External_single
Definition prt-ext.h:65
#define Z_External_update0
Definition prt-ext.h:86
#define Z_External_persistentResultSet
Definition prt-ext.h:95
#define Z_External_summary
Definition prt-ext.h:79
#define Z_External_persistentQuery
Definition prt-ext.h:96
#define Z_External_espec1
Definition prt-ext.h:78
#define Z_External_promptObject1
Definition prt-ext.h:73
#define Z_External_acfDes1
Definition prt-ext.h:90
#define Z_External_searchResult1
Definition prt-ext.h:81
#define Z_External_octet
Definition prt-ext.h:66
#define Z_External_grs1
Definition prt-ext.h:74
#define Z_External_resourceReport2
Definition prt-ext.h:72
#define Z_External_universeReport
Definition prt-ext.h:84
#define Z_External_multisrch2
Definition prt-ext.h:92
#define Z_External_sutrs
Definition prt-ext.h:69
#define Z_External_resourceReport1
Definition prt-ext.h:71
#define Z_External_userInfo1
Definition prt-ext.h:87
#define Z_External_diag1
Definition prt-ext.h:77
#define Z_External_explainRecord
Definition prt-ext.h:70
#define Z_External_charSetandLanguageNegotiation
Definition prt-ext.h:88
#define Z_External_userFacets
Definition prt-ext.h:100
#define Z_External_acfPrompt1
Definition prt-ext.h:89
#define Z_External_arbitrary
Definition prt-ext.h:67
#define Z_External_exportSpecification
Definition prt-ext.h:98
#define Z_External_OPAC
Definition prt-ext.h:80
#define Z_External_CQL
Definition prt-ext.h:93
#define Z_External_OCLCUserInfo
Definition prt-ext.h:94
#define Z_External_periodicQuerySchedule
Definition prt-ext.h:97
#define Z_External_update
Definition prt-ext.h:82
#define Z_External_dateTime
Definition prt-ext.h:83
#define Z_External_exportInvocation
Definition prt-ext.h:99
#define Z_External_extendedService
Definition prt-ext.h:75
#define Z_External_ESAdmin
Definition prt-ext.h:85
#define Z_External_itemOrder
Definition prt-ext.h:76
char * buf
Definition odr-priv.h:84
const char * bp
Definition odr-priv.h:85
structure for all known EXTERNALs
Definition prt-ext.h:59
Odr_int * indirect_reference
Definition prt-ext.h:61
int which
Definition prt-ext.h:63
Z_GenericRecord * grs1
Definition prt-ext.h:115
union Z_External::@27 u
Z_SUTRS * sutrs
Definition prt-ext.h:109
Odr_oid * direct_reference
Definition prt-ext.h:60
Odr_any * single_ASN1_type
Definition prt-ext.h:104
Odr_oct * octet_aligned
Definition prt-ext.h:105
char * descriptor
Definition prt-ext.h:62
Odr_oid oid[OID_SIZE]
Definition prt-ext.h:52
Definition odr.h:138
int which
Definition odr.h:142
Definition odr.h:100
int len
Definition odr.h:102
char * buf
Definition odr.h:101
Definition odr.h:125
struct Odr_private * op
Definition odr.h:132
int direction
Definition odr.h:126
NMEM mem
Definition odr.h:130
int z_DES_RN_Object(ODR o, Z_DES_RN_Object **p, int opt, const char *name)
Definition z-accdes1.c:12
int z_PromptObject1(ODR o, Z_PromptObject1 **p, int opt, const char *name)
Definition z-accform1.c:12
int z_KRBObject(ODR o, Z_KRBObject **p, int opt, const char *name)
Definition z-acckrb1.c:12
int z_CharSetandLanguageNegotiation(ODR o, Z_CharSetandLanguageNegotiation **p, int opt, const char *name)
Definition z-charneg.c:12
int z_InternationalString(ODR o, Z_InternationalString **p, int opt, const char *name)
Definition z-core.c:1598
int z_OtherInformation(ODR o, Z_OtherInformation **p, int opt, const char *name)
Definition z-core.c:1545
int z_DateTime(ODR o, Z_DateTime **p, int opt, const char *name)
Definition z-date.c:12
int z_DiagnosticFormat(ODR o, Z_DiagnosticFormat **p, int opt, const char *name)
Definition z-diag1.c:32
int z_Espec1(ODR o, Z_Espec1 **p, int opt, const char *name)
Definition z-espec1.c:12
int z_TaskPackage(ODR o, Z_TaskPackage **p, int opt, const char *name)
Definition z-estask.c:12
int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt, const char *name)
Definition z-exp.c:12
int z_FacetList(ODR o, Z_FacetList **p, int opt, const char *name)
Definition z-facet-1.c:12
int z_GenericRecord(ODR o, Z_GenericRecord **p, int opt, const char *name)
Definition z-grs.c:12
int z_MultipleSearchTerms_2(ODR o, Z_MultipleSearchTerms_2 **p, int opt, const char *name)
Definition z-mterm2.c:24
int z_OCLC_UserInformation(ODR o, Z_OCLC_UserInformation **p, int opt, const char *name)
Definition z-oclcui.c:12
int z_OPACRecord(ODR o, Z_OPACRecord **p, int opt, const char *name)
Definition z-opac.c:12
int z_ResourceReport1(ODR o, Z_ResourceReport1 **p, int opt, const char *name)
Definition z-rrf1.c:12
int z_ResourceReport2(ODR o, Z_ResourceReport2 **p, int opt, const char *name)
Definition z-rrf2.c:12
int z_BriefBib(ODR o, Z_BriefBib **p, int opt, const char *name)
Definition z-sum.c:12
int z_SUTRS(ODR o, Odr_oct **p, int opt, const char *name)
Definition z-sutrs.c:17
int z_SearchInfoReport(ODR o, Z_SearchInfoReport **p, int opt, const char *name)
Definition z-uifr1.c:36
int z_UniverseReport(ODR o, Z_UniverseReport **p, int opt, const char *name)
Definition z-univ.c:31
int z_Admin(ODR o, Z_Admin **p, int opt, const char *name)
Definition zes-admin.c:36
int z_EIExportInvocation(ODR o, Z_EIExportInvocation **p, int opt, const char *name)
Definition zes-expi.c:36
int z_ESExportSpecification(ODR o, Z_ESExportSpecification **p, int opt, const char *name)
Definition zes-exps.c:36
int z_IOItemOrder(ODR o, Z_IOItemOrder **p, int opt, const char *name)
Definition zes-order.c:36
int z_PQueryPersistentQuery(ODR o, Z_PQueryPersistentQuery **p, int opt, const char *name)
Definition zes-pquery.c:36
int z_PQSPeriodicQuerySchedule(ODR o, Z_PQSPeriodicQuerySchedule **p, int opt, const char *name)
Definition zes-psched.c:36
int z_PRPersistentResultSet(ODR o, Z_PRPersistentResultSet **p, int opt, const char *name)
Definition zes-pset.c:36
int z_IU0Update(ODR o, Z_IU0Update **p, int opt, const char *name)
Definition zes-update0.c:36
int z_IUUpdate(ODR o, Z_IUUpdate **p, int opt, const char *name)
Definition zes-update.c:36