X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmarc_read_line.c;h=123f4757a96dafc2da3ac8252537516ee32418bb;hb=dbc40ad16aa82379d2884e106d79c7d83312667a;hp=efbae74969d6ec1406260a765fb43120fe0fd4a5;hpb=abf8266c39394f5d3b182cfba09c4b3f64584e4a;p=yaz-moved-to-github.git diff --git a/src/marc_read_line.c b/src/marc_read_line.c index efbae74..123f475 100644 --- a/src/marc_read_line.c +++ b/src/marc_read_line.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2009 Index Data + * Copyright (C) 1995-2013 Index Data * See the file LICENSE for details. */ @@ -19,16 +19,15 @@ #include #include #include -#include #include #include #include -int yaz_gets(int (*getbyte)(void *client_data), - void (*ungetbyte)(int b, void *client_data), - void *client_data, - WRBUF w) +static int yaz_gets(int (*getbyte)(void *client_data), + void (*ungetbyte)(int b, void *client_data), + void *client_data, + WRBUF w) { size_t sz = 0; int ch = getbyte(client_data); @@ -92,7 +91,7 @@ static int yaz_marc_line_gets(int (*getbyte)(void *client_data), return 1; } - + int yaz_marc_read_line(yaz_marc_t mt, int (*getbyte)(void *client_data), void (*ungetbyte)(int b, void *client_data), @@ -128,7 +127,7 @@ int yaz_marc_read_line(yaz_marc_t mt, } else if (line[0] == '(') /* annotation, skip it */ ; - else if (line_len == 24 && atoi_n_check(line, 5, &val) && val >= 24) + else if (line_len == 24 && atoi_n_check(line, 5, &val)) { /* deal with header lines: 00366nam 22001698a 4500 */ @@ -144,7 +143,7 @@ int yaz_marc_read_line(yaz_marc_t mt, &length_implementation); header_created = 1; } - else if (line_len > 5 && line[0] != ' ' && line[1] != ' ' + else if (line_len > 4 && line[0] != ' ' && line[1] != ' ' && line[2] != ' ' && line[3] == ' ' ) { /* deal with data/control lines: 245 12 ........ */ @@ -196,7 +195,7 @@ int yaz_marc_read_line(yaz_marc_t mt, { const char *next; size_t len; - + assert(cp[0] == marker_ch); cp++; next = cp;