X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fber_tag.c;h=0443857f2b61bb929afd722c8f5e08737be7a389;hp=a6b6ae8f5982aef4b2377666e10066225f9dbc70;hb=5564216deccb49e138f665e223c81fe6c1edd79d;hpb=db93359f0cbf9a1e9dc81ea05f7b8662f843ae3d diff --git a/src/ber_tag.c b/src/ber_tag.c index a6b6ae8..0443857 100644 --- a/src/ber_tag.c +++ b/src/ber_tag.c @@ -1,11 +1,9 @@ -/* - * Copyright (C) 1995-2007, Index Data ApS +/* This file is part of the YAZ toolkit. + * Copyright (C) Index Data * See the file LICENSE for details. - * - * $Id: ber_tag.c,v 1.8 2007-03-19 21:08:13 adam Exp $ */ -/** +/** * \file ber_tag.c * \brief Implements BER tags encoding and decoding * @@ -46,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) @@ -78,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) { @@ -89,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; @@ -159,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) @@ -190,6 +189,7 @@ int ber_dectag(const unsigned char *b, int *zclass, int *tag, /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab