source: trunk/gsdl/packages/yaz/odr/odr_oid.c@ 1343

Last change on this file since 1343 was 1343, checked in by johnmcp, 24 years ago

Added the YAZ toolkit source to the packages directory (for z39.50 stuff)

  • Property svn:keywords set to Author Date Id Revision
File size: 2.5 KB
Line 
1/*
2 * Copyright (c) 1995-2000, Index Data
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
5 *
6 * $Log$
7 * Revision 1.1 2000/08/03 03:11:23 johnmcp
8 * Added the YAZ toolkit source to the packages directory (for z39.50 stuff)
9 *
10 * Revision 1.16 2000/02/29 13:44:55 adam
11 * Check for config.h (currently not generated).
12 *
13 * Revision 1.15 1999/11/30 13:47:11 adam
14 * Improved installation. Moved header files to include/yaz.
15 *
16 * Revision 1.14 1999/04/20 09:56:48 adam
17 * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun).
18 * Modified all encoders/decoders to reflect this change.
19 *
20 * Revision 1.13 1998/02/11 11:53:34 adam
21 * Changed code so that it compiles as C++.
22 *
23 * Revision 1.12 1995/09/29 17:12:25 quinn
24 * Smallish
25 *
26 * Revision 1.11 1995/09/27 15:03:00 quinn
27 * Modified function heads & prototypes.
28 *
29 * Revision 1.10 1995/05/29 08:11:44 quinn
30 * Moved oid from odr/asn to util.
31 *
32 * Revision 1.9 1995/05/16 08:50:57 quinn
33 * License, documentation, and memory fixes
34 *
35 * Revision 1.8 1995/03/17 10:17:55 quinn
36 * Added memory management.
37 *
38 * Revision 1.7 1995/03/08 12:12:29 quinn
39 * Added better error checking.
40 *
41 * Revision 1.6 1995/03/01 08:40:56 quinn
42 * Smallish changes.
43 *
44 * Revision 1.5 1995/02/10 18:57:26 quinn
45 * More in the way of error-checking.
46 *
47 * Revision 1.4 1995/02/10 15:55:29 quinn
48 * Bug fixes, mostly.
49 *
50 * Revision 1.3 1995/02/09 15:51:49 quinn
51 * Works better now.
52 *
53 * Revision 1.2 1995/02/07 14:13:46 quinn
54 * Bug fixes.
55 *
56 * Revision 1.1 1995/02/03 17:04:38 quinn
57 * Initial revision
58 *
59 *
60 */
61#if HAVE_CONFIG_H
62#include <config.h>
63#endif
64
65#include <yaz/odr.h>
66#include <yaz/oid.h>
67
68/*
69 * Top level oid en/decoder.
70 * Returns 1 on success, 0 on error.
71 */
72int odr_oid(ODR o, Odr_oid **p, int opt, const char *name)
73{
74 int res, cons = 0;
75
76 if (o->error)
77 return 0;
78 if (o->t_class < 0)
79 {
80 o->t_class = ODR_UNIVERSAL;
81 o->t_tag = ODR_OID;
82 }
83 if ((res = ber_tag(o, p, o->t_class, o->t_tag, &cons, opt)) < 0)
84 return 0;
85 if (!res)
86 return opt;
87 if (cons)
88 {
89 o->error = OPROTO;
90 return 0;
91 }
92 if (o->direction == ODR_PRINT)
93 {
94 int i;
95
96 odr_prname(o, name);
97 fprintf(o->print, "OID:");
98 for (i = 0; (*p)[i] > -1; i++)
99 fprintf(o->print, " %d", (*p)[i]);
100 fprintf(o->print, "\n");
101 return 1;
102 }
103 if (o->direction == ODR_DECODE)
104 *p = (int *)odr_malloc(o, OID_SIZE * sizeof(**p));
105 return ber_oidc(o, *p);
106}
Note: See TracBrowser for help on using the repository browser.