X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fber_tag.c;h=0443857f2b61bb929afd722c8f5e08737be7a389;hp=c4310fd9610c1edfa65aa756533f10d9f14c1904;hb=5564216deccb49e138f665e223c81fe6c1edd79d;hpb=379504a233e3e2cc85bca1e7b6d864f1395aec7c diff --git a/src/ber_tag.c b/src/ber_tag.c index c4310fd..0443857 100644 --- a/src/ber_tag.c +++ b/src/ber_tag.c @@ -1,9 +1,9 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2009 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ -/** +/** * \file ber_tag.c * \brief Implements BER tags encoding and decoding * @@ -44,8 +44,8 @@ int ber_tag(ODR o, void *p, int zclass, int tag, int *constructed, int opt, if (ODR_STACK_EMPTY(o)) { odr_seek(o, ODR_S_SET, 0); - o->top = 0; - o->bp = o->buf; + o->op->top = 0; + o->op->bp = o->op->buf; odr_ber_tag->lclass = -1; } switch (o->direction) @@ -76,7 +76,7 @@ int ber_tag(ODR o, void *p, int zclass, int tag, int *constructed, int opt, if (odr_ber_tag->lclass < 0) { if ((odr_ber_tag->br = - ber_dectag(o->bp, &odr_ber_tag->lclass, + ber_dectag(o->op->bp, &odr_ber_tag->lclass, &odr_ber_tag->ltag, &odr_ber_tag->lcons, odr_max(o))) <= 0) { @@ -87,7 +87,7 @@ int ber_tag(ODR o, void *p, int zclass, int tag, int *constructed, int opt, } if (zclass == odr_ber_tag->lclass && tag == odr_ber_tag->ltag) { - o->bp += odr_ber_tag->br; + o->op->bp += odr_ber_tag->br; *constructed = odr_ber_tag->lcons; odr_ber_tag->lclass = -1; return 1; @@ -157,14 +157,15 @@ int ber_enctag(ODR o, int zclass, int tag, int constructed) } } -/** +/** * \brief Decodes BER identifier octets. * * Returns number of bytes read or -1 for error. */ -int ber_dectag(const unsigned char *b, int *zclass, int *tag, +int ber_dectag(const char *cp, int *zclass, int *tag, int *constructed, int max) { + const unsigned char *b = (const unsigned char *) cp; int l = 1; if (l > max)