New Z39.50 OID utilities.
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 25 Sep 2001 07:35:37 +0000 (07:35 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 25 Sep 2001 07:35:37 +0000 (07:35 +0000)
zutil/z3950oid.c [new file with mode: 0644]

diff --git a/zutil/z3950oid.c b/zutil/z3950oid.c
new file mode 100644 (file)
index 0000000..f8eb6ab
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 1995-2001, Index Data
+ * See the file LICENSE for details.
+ *
+ * $Id: z3950oid.c,v 1.1 2001-09-25 07:35:37 adam Exp $
+ */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <yaz/proto.h>
+
+Odr_oid *yaz_oidval_to_z3950oid (ODR o, int oid_class, int oid_value)
+{
+    oident ident;
+    int oid[OID_SIZE];
+
+    ident.proto = PROTO_Z3950;
+    ident.oclass = oid_class;
+    ident.value = oid_value;
+
+    if (ident.value == VAL_NONE)
+       return 0;
+
+    return odr_oiddup(o, oid_ent_to_oid(&ident, oid));
+}
+
+Odr_oid *yaz_str_to_z3950oid (ODR o, int oid_class, const char *str)
+{
+    struct oident ident;
+    int oid[OID_SIZE];
+
+    ident.proto = PROTO_Z3950;
+    ident.oclass = oid_class;
+    ident.value = oid_getvalbyname(str);
+
+    if (ident.value == VAL_NONE)
+       return 0;
+
+    return odr_oiddup(o, oid_ent_to_oid(&ident, oid));
+}
+
+const char *yaz_z3950oid_to_str (Odr_oid *oid, int *oid_class)
+{
+    struct oident *ident = oid_getentbyoid(oid);
+
+    if (!ident || ident->value == VAL_NONE)
+       return 0;
+    *oid_class = ident->oclass;
+    return ident->desc;
+}