YAZ  5.23.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 {
68  Z_ext_typeent *p;
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 
95 int 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},
106  (Odr_fun)odr_bitstring, 0},
108  (Odr_fun)z_SUTRS, 0},
111 
121  (Odr_fun)z_TaskPackage, 0},
122 
124  (Odr_fun)z_IOItemOrder, 0},
128  (Odr_fun)z_Espec1, 0},
130  (Odr_fun)z_BriefBib, 0},
132  (Odr_fun)z_OPACRecord, 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) &&
259  odr_sequence_end(o);
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 
284  if (!oid_oidcmp(oid, yaz_oid_recsyn_sutrs))
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  {
294  thisext->which = Z_External_explainRecord;
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 
368 Z_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 
373 Z_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 
378 Z_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 
#define odr_ok(o)
Definition: odr.h:215
const Odr_oid yaz_oid_recsyn_usmarc[]
Definition: oid_std.c:43
int z_PromptObject1(ODR o, Z_PromptObject1 **p, int opt, const char *name)
Definition: z-accform1.c:12
int z_Admin(ODR o, Z_Admin **p, int opt, const char *name)
Definition: zes-admin.c:36
const Odr_oid yaz_oid_recsyn_grs_1[]
Definition: oid_std.c:72
#define Z_External_resourceReport2
Definition: prt-ext.h:72
int z_ESExportSpecification(ODR o, Z_ESExportSpecification **p, int opt, const char *name)
Definition: zes-exps.c:36
char * buf
Definition: odr.h:101
#define Z_External_exportInvocation
Definition: prt-ext.h:99
Z_ext_typeent * z_ext_getentbyref(const Odr_oid *oid)
returns type information for OID (NULL if not known)
Definition: prt-ext.c:66
int z_KRBObject(ODR o, Z_KRBObject **p, int opt, const char *name)
Definition: z-acckrb1.c:12
void odr_choice_bias(ODR o, int what)
Definition: odr_choice.c:90
#define ODR_UNIVERSAL
Definition: odr.h:65
const Odr_oid yaz_oid_recsyn_opac[]
Definition: oid_std.c:69
const Odr_oid yaz_oid_recsyn_sutrs[]
Definition: oid_std.c:68
#define Z_External_persistentQuery
Definition: prt-ext.h:96
int z_PQueryPersistentQuery(ODR o, Z_PQueryPersistentQuery **p, int opt, const char *name)
Definition: zes-pquery.c:36
int z_FacetList(ODR o, Z_FacetList **p, int opt, const char *name)
Definition: z-facet-1.c:12
#define Z_External_CQL
Definition: prt-ext.h:93
#define Z_External_diag1
Definition: prt-ext.h:77
int z_UniverseReport(ODR o, Z_UniverseReport **p, int opt, const char *name)
Definition: z-univ.c:31
#define Z_External_acfKrb1
Definition: prt-ext.h:91
#define odr_implicit_tag(o, t, p, cl, tg, opt, name)
Definition: odr.h:192
int z_OtherInformation(ODR o, Z_OtherInformation **p, int opt, const char *name)
Definition: z-core.c:1545
int odr_sequence_begin(ODR o, void *p, int size, const char *name)
Definition: odr_seq.c:15
Odr_oid * direct_reference
Definition: prt-ext.h:60
int z_IOItemOrder(ODR o, Z_IOItemOrder **p, int opt, const char *name)
Definition: zes-order.c:36
#define Z_External_dateTime
Definition: prt-ext.h:83
int oid_oidcmp(const Odr_oid *o1, const Odr_oid *o2)
compares OIDs
Definition: oid_util.c:34
int z_Espec1(ODR o, Z_Espec1 **p, int opt, const char *name)
Definition: z-espec1.c:12
char * name
Definition: initopt.c:18
int z_OCLC_UserInformation(ODR o, Z_OCLC_UserInformation **p, int opt, const char *name)
Definition: z-oclcui.c:12
#define Z_External_promptObject1
Definition: prt-ext.h:73
int odr_graphicstring(ODR o, char **p, int opt, const char *name)
Definition: odr_use.c:57
#define Z_External_searchResult1
Definition: prt-ext.h:81
#define Z_External_update0
Definition: prt-ext.h:86
short Odr_oid
Definition: oid_util.h:42
void * nmem_malloc(NMEM n, size_t size)
allocates memory block on NMEM handle
Definition: nmem.c:145
Odr_oid oid[OID_SIZE]
Definition: prt-ext.h:52
#define YLOG_LOG
log level: log (regular)
Definition: log.h:48
Odr_fun fun
Definition: prt-ext.h:54
int z_SearchInfoReport(ODR o, Z_SearchInfoReport **p, int opt, const char *name)
Definition: z-uifr1.c:36
#define Z_External_exportSpecification
Definition: prt-ext.h:98
int z_External(ODR o, Z_External **p, int opt, const char *name)
codec for BER EXTERNAL
Definition: prt-ext.c:95
#define Z_External_userFacets
Definition: prt-ext.h:100
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
void * odr_malloc(ODR o, size_t size)
Definition: odr_mem.c:31
int odr_any(ODR o, Odr_any **p, int opt, const char *name)
Definition: odr_any.c:23
Internal ODR definitions.
const Odr_oid yaz_oid_recsyn_xml[]
Definition: oid_std.c:89
Header for OID database.
union Z_External::@30 u
int which
Definition: prt-ext.h:63
int z_DateTime(ODR o, Z_DateTime **p, int opt, const char *name)
Definition: z-date.c:12
#define Z_External_extendedService
Definition: prt-ext.h:75
int direction
Definition: odr.h:126
int odr_integer(ODR o, Odr_int **p, int opt, const char *name)
Definition: odr_int.c:19
#define Z_External_userInfo1
Definition: prt-ext.h:87
#define Z_External_grs1
Definition: prt-ext.h:74
int odr_choice(ODR o, Odr_arm arm[], void *p, void *whichp, const char *name)
Definition: odr_choice.c:17
int z_ResourceReport1(ODR o, Z_ResourceReport1 **p, int opt, const char *name)
Definition: z-rrf1.c:12
#define Z_External_explainRecord
Definition: prt-ext.h:70
#define Z_External_OCLCUserInfo
Definition: prt-ext.h:94
int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt, const char *name)
Definition: z-exp.c:12
int z_TaskPackage(ODR o, Z_TaskPackage **p, int opt, const char *name)
Definition: z-estask.c:12
enum l_file_type type
Definition: log.c:45
int odr_peektag(ODR o, int *zclass, int *tag, int *cons)
Definition: odr_tag.c:15
Odr_any * single_ASN1_type
Definition: prt-ext.h:104
Odr_oid * odr_oiddup_nmem(NMEM nmem, const Odr_oid *o)
Definition: odr_util.c:47
#define ODR_EXPLICIT
Definition: odr.h:60
Z_External * z_ext_record_xml(ODR o, const char *buf, int len)
encodes EXTERNAL XML record
Definition: prt-ext.c:368
int(* Odr_fun)(ODR, char **, int, const char *)
Definition: odr.h:135
#define Z_External_periodicQuerySchedule
Definition: prt-ext.h:97
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
char * descriptor
Definition: prt-ext.h:62
#define Z_External_ESAdmin
Definition: prt-ext.h:85
Header for Z39.50 Protocol.
int which
Definition: odr.h:142
Definition: odr.h:137
Definition: odr.h:99
struct Odr_private * op
Definition: odr.h:132
const Odr_oid yaz_oid_recsyn_extended[]
Definition: oid_std.c:73
#define Z_External_single
Definition: prt-ext.h:65
int size
Definition: odr-priv.h:88
Odr_int * indirect_reference
Definition: prt-ext.h:61
int z_OPACRecord(ODR o, Z_OPACRecord **p, int opt, const char *name)
Definition: z-opac.c:12
int z_PQSPeriodicQuerySchedule(ODR o, Z_PQSPeriodicQuerySchedule **p, int opt, const char *name)
Definition: zes-psched.c:36
NMEM mem
Definition: odr.h:130
int z_EIExportInvocation(ODR o, Z_EIExportInvocation **p, int opt, const char *name)
Definition: zes-expi.c:36
int z_DiagnosticFormat(ODR o, Z_DiagnosticFormat **p, int opt, const char *name)
Definition: z-diag1.c:32
const char * bp
Definition: odr-priv.h:85
Definition: odr.h:124
int z_PRPersistentResultSet(ODR o, Z_PRPersistentResultSet **p, int opt, const char *name)
Definition: zes-pset.c:36
int odr_sequence_end(ODR o)
Definition: odr_seq.c:61
#define Z_External_charSetandLanguageNegotiation
Definition: prt-ext.h:88
int z_SUTRS(ODR o, Odr_oct **p, int opt, const char *name)
Definition: z-sutrs.c:17
int z_IUUpdate(ODR o, Z_IUUpdate **p, int opt, const char *name)
Definition: zes-update.c:36
int opt
Definition: initopt.c:19
Odr_oid * odr_oiddup(ODR odr, const Odr_oid *o)
Definition: odr_util.c:60
#define Z_External_OPAC
Definition: prt-ext.h:80
static Z_ext_typeent type_table[]
Definition: prt-ext.c:28
#define Z_External_universeReport
Definition: prt-ext.h:84
#define Z_External_persistentResultSet
Definition: prt-ext.h:95
#define Z_External_octet
Definition: prt-ext.h:66
char * buf
Definition: odr-priv.h:84
#define ODR_IMPLICIT
Definition: odr.h:59
int z_MultipleSearchTerms_2(ODR o, Z_MultipleSearchTerms_2 **p, int opt, const char *name)
Definition: z-mterm2.c:24
const Odr_oid yaz_oid_recsyn_explain[]
Definition: oid_std.c:67
int odr_oid(ODR o, Odr_oid **p, int opt, const char *name)
Definition: odr_oid.c:20
Z_GenericRecord * grs1
Definition: prt-ext.h:115
Z_External * z_ext_record_usmarc(ODR o, const char *buf, int len)
encodes EXTERNAL USMARC/MARC21 record
Definition: prt-ext.c:378
structure for all known EXTERNALs
Definition: prt-ext.h:58
#define ODR_EXTERNAL
Definition: odr.h:80
int z_InternationalString(ODR o, Z_InternationalString **p, int opt, const char *name)
Definition: z-core.c:1598
void yaz_log(int level, const char *fmt,...)
Writes log message.
Definition: log.c:485
Z_External * z_ext_record_sutrs(ODR o, const char *buf, int len)
encodes EXTERNAL SUTRS record
Definition: prt-ext.c:373
int odr_octetstring(ODR o, Odr_oct **p, int opt, const char *name)
Definition: odr_oct.c:19
int z_IU0Update(ODR o, Z_IU0Update **p, int opt, const char *name)
Definition: zes-update0.c:36
int odr_bitstring(ODR o, Odr_bitmask **p, int opt, const char *name)
Definition: odr_bit.c:22
#define Z_External_multisrch2
Definition: prt-ext.h:92
Z_SUTRS * sutrs
Definition: prt-ext.h:109
#define Z_External_sutrs
Definition: prt-ext.h:69
#define Z_External_summary
Definition: prt-ext.h:79
#define Z_External_acfDes1
Definition: prt-ext.h:90
Logging utility.
#define Z_External_acfPrompt1
Definition: prt-ext.h:89
#define Z_External_itemOrder
Definition: prt-ext.h:76
#define ODR_CONTEXT
Definition: odr.h:67
int z_CharSetandLanguageNegotiation(ODR o, Z_CharSetandLanguageNegotiation **p, int opt, const char *name)
Definition: z-charneg.c:12
int z_DES_RN_Object(ODR o, Z_DES_RN_Object **p, int opt, const char *name)
Definition: z-accdes1.c:12
Odr_oct * octet_aligned
Definition: prt-ext.h:105
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
#define Z_External_espec1
Definition: prt-ext.h:78
#define Z_External_resourceReport1
Definition: prt-ext.h:71
int z_BriefBib(ODR o, Z_BriefBib **p, int opt, const char *name)
Definition: z-sum.c:12
#define Z_External_arbitrary
Definition: prt-ext.h:67
#define ODR_DECODE
Definition: odr.h:95
int z_ResourceReport2(ODR o, Z_ResourceReport2 **p, int opt, const char *name)
Definition: z-rrf2.c:12
int odr_implicit_settag(ODR o, int zclass, int tag)
Definition: odr_tag.c:32
#define Z_External_update
Definition: prt-ext.h:82
const Odr_oid yaz_oid_recsyn_summary[]
Definition: oid_std.c:70
int len
Definition: odr.h:102
int z_GenericRecord(ODR o, Z_GenericRecord **p, int opt, const char *name)
Definition: z-grs.c:12