yaz_use_attribute_create based on get_attributeList DRY
[yaz-moved-to-github.git] / src / ber_any.c
index 939fb74..7243e3d 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2012 Index Data
+ * Copyright (C) Index Data
  * See the file LICENSE for details.
  */
 
@@ -25,15 +25,15 @@ int ber_any(ODR o, Odr_any **p)
     switch (o->direction)
     {
     case ODR_DECODE:
-        if ((res = completeBER(o->bp, odr_max(o))) <= 0)        /* FIX THIS */
+        if ((res = completeBER(o->op->bp, odr_max(o))) <= 0)        /* FIX THIS */
         {
             odr_seterror(o, OPROTO, 2);
             return 0;
         }
-        (*p)->buf = (unsigned char *)odr_malloc(o, res);
-        memcpy((*p)->buf, o->bp, res);
-        (*p)->len = (*p)->size = res;
-        o->bp += res;
+        (*p)->buf = (char *)odr_malloc(o, res);
+        memcpy((*p)->buf, o->op->bp, res);
+        (*p)->len = res;
+        o->op->bp += res;
         return 1;
     case ODR_ENCODE:
         if (odr_write(o, (*p)->buf, (*p)->len) < 0)
@@ -45,10 +45,10 @@ int ber_any(ODR o, Odr_any **p)
 
 #define BER_ANY_DEBUG 0
 
-int completeBER_n(const unsigned char *buf, int len, int level)
+int completeBER_n(const char *buf, int len, int level)
 {
     int res, ll, zclass, tag, cons;
-    const unsigned char *b = buf;
+    const char *b = buf;
 
     if (level > 1000)
     {
@@ -120,7 +120,7 @@ int completeBER_n(const unsigned char *buf, int len, int level)
     return (b - buf) + 2;
 }
 
-int completeBER(const unsigned char *buf, int len)
+int completeBER(const char *buf, int len)
 {
     int res = completeBER_n(buf, len, 0);
 #if BER_ANY_DEBUG