X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fber_tag.c;h=69cdc8e31df5d4d03f83478429848a9236bc722a;hp=64908d7a044591623d148529e9e138cd63823c9d;hb=99f1879827d5be93a6363b5adbc83b824135dd88;hpb=fb6d99a0c7e07d9cc4a315c447deaf6564a85505 diff --git a/src/ber_tag.c b/src/ber_tag.c index 64908d7..69cdc8e 100644 --- a/src/ber_tag.c +++ b/src/ber_tag.c @@ -1,8 +1,6 @@ -/* - * Copyright (C) 1995-2005, Index Data ApS +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2010 Index Data * See the file LICENSE for details. - * - * $Id: ber_tag.c,v 1.5 2005-06-25 15:46:03 adam Exp $ */ /** @@ -19,15 +17,19 @@ #include #include "odr-priv.h" -/* ber_tag +/** + * \brief Encode/decode BER tags + * * On encoding: + * \verbatim * if p: write tag. return 1 (success) or -1 (error). * if !p: return 0. + * \endverbatim * On decoding: + * \verbatim * if tag && zclass match up, advance pointer and return 1. set cons. * else leave pointer unchanged. Return 0. - * - * Should perhaps be odr_tag? + * \endverbatim */ int ber_tag(ODR o, void *p, int zclass, int tag, int *constructed, int opt, const char *name) @@ -38,8 +40,8 @@ int ber_tag(ODR o, void *p, int zclass, int tag, int *constructed, int opt, if (o->direction == ODR_DECODE) *pp = 0; - o->t_class = -1; - if (o->op->stackp < 0) + o->op->t_class = -1; + if (ODR_STACK_EMPTY(o)) { odr_seek(o, ODR_S_SET, 0); o->top = 0; @@ -60,14 +62,9 @@ int ber_tag(ODR o, void *p, int zclass, int tag, int *constructed, int opt, } if ((rd = ber_enctag(o, zclass, tag, *constructed)) < 0) return -1; -#ifdef ODR_DEBUG - fprintf(stderr, "\n[class=%d,tag=%d,cons=%d,stackp=%d]", zclass, tag, - *constructed, o->op->stackp); -#endif return 1; - case ODR_DECODE: - if (o->op->stackp > -1 && !odr_constructed_more(o)) + if (ODR_STACK_NOT_EMPTY(o) && !odr_constructed_more(o)) { if (!opt) { @@ -87,12 +84,6 @@ int ber_tag(ODR o, void *p, int zclass, int tag, int *constructed, int opt, odr_setelement(o, name); return 0; } -#ifdef ODR_DEBUG - fprintf(stderr, - "\n[class=%d,tag=%d,cons=%d,stackp=%d]", - odr_ber_tag->lclass, odr_ber_tag->ltag, - odr_ber_tag->lcons, o->op->stackp); -#endif } if (zclass == odr_ber_tag->lclass && tag == odr_ber_tag->ltag) { @@ -124,9 +115,10 @@ int ber_tag(ODR o, void *p, int zclass, int tag, int *constructed, int opt, } } -/* ber_enctag - * BER-encode a zclass/tag/constructed package (identifier octets). Return - * number of bytes encoded, or -1 if out of bounds. +/** + * \brief BER-encode a zclass/tag/constructed package (identifier octets). + * + * Return number of bytes encoded, or -1 if out of bounds. */ int ber_enctag(ODR o, int zclass, int tag, int constructed) { @@ -165,8 +157,10 @@ int ber_enctag(ODR o, int zclass, int tag, int constructed) } } -/* ber_dectag - * Decode BER identifier octets. Return number of bytes read or -1 for error. +/** + * \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 *constructed, int max) @@ -194,6 +188,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