X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fodr_bit.c;h=6600e43163bb44c80206bc2f48f526f759a9070c;hp=6b615d5250a73e7563a5afa41fd80d94f6405d21;hb=3c51b85ff62261acc19c6995a041569ec4ef6d63;hpb=379504a233e3e2cc85bca1e7b6d864f1395aec7c diff --git a/src/odr_bit.c b/src/odr_bit.c index 6b615d5..6600e43 100644 --- a/src/odr_bit.c +++ b/src/odr_bit.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2009 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ @@ -37,8 +37,20 @@ int odr_bitstring(ODR o, Odr_bitmask **p, int opt, const char *name) return odr_missing(o, opt, name); if (o->direction == ODR_PRINT) { + int i = ODR_BITMASK_SIZE; + int j; odr_prname(o, name); - odr_printf(o, "BITSTRING(len=%d)\n",(*p)->top + 1); + odr_printf(o, "BITSTRING(len=%d) ",(*p)->top + 1); + while (--i > 0) + if (ODR_MASK_GET(*p, i)) + break; + for (j = 0; j <= i; j++) + { + odr_printf(o, "%c", ODR_MASK_GET(*p, j) ? '1' : '0'); + if (j && ((j+1)&7) == 0) + odr_printf(o, "-"); + } + odr_printf(o, "\n"); return 1; } if (o->direction == ODR_DECODE) @@ -48,7 +60,7 @@ int odr_bitstring(ODR o, Odr_bitmask **p, int opt, const char *name) (*p)->top = -1; } #if 0 - /* ignoring the cons helps with at least one target. + /* ignoring the cons helps with at least one target. * http://bugzilla.indexdata.dk/cgi-bin/bugzilla/show_bug.cgi?id=24 */ return ber_bitstring(o, *p, 0);