From: Adam Dickmeiss Date: Mon, 15 Mar 2004 22:51:10 +0000 (+0000) Subject: Skip multiple of ($, in MARC-8 ESC sequence X-Git-Tag: YAZ.2.0.16.debian.1~7 X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=commitdiff_plain;h=9ee70f4c22c4990e7fe62a5238caa6b4e71f6a0f Skip multiple of ($, in MARC-8 ESC sequence --- diff --git a/src/siconv.c b/src/siconv.c index e351b13..9467237 100644 --- a/src/siconv.c +++ b/src/siconv.c @@ -2,7 +2,7 @@ * Copyright (c) 1997-2004, Index Data * See the file LICENSE for details. * - * $Id: siconv.c,v 1.3 2004-03-15 21:39:06 adam Exp $ + * $Id: siconv.c,v 1.4 2004-03-15 22:51:10 adam Exp $ */ /* mini iconv and wrapper for system iconv library (if present) */ @@ -226,27 +226,11 @@ static unsigned long yaz_read_marc8 (yaz_iconv_t cd, unsigned char *inp, size_t inbytesleft0 = inbytesleft; inp++; inbytesleft--; - if (inbytesleft <= 1) - { - *no_read = 0; - cd->my_errno = YAZ_ICONV_EINVAL; - return 0; - } - if (*inp == '(' || *inp == ',') /* GO, one bytes */ + while(inbytesleft > 0 && strchr("(,$", *inp)) { inbytesleft--; inp++; } - else if (*inp == '$') /* G0, multi byte */ - { - inbytesleft--; - inp++; - if (inp[0] == ',') - { - inbytesleft--; - inp++; - } - } if (inbytesleft <= 0) { *no_read = 0;