X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=retrieval%2Fd1_read.c;h=6ff74457ec7d554e023e71b32fb3df194a637e32;hb=37b3d8433b89248def810d7cfa9b110893519f65;hp=a6e21cdaae51b86df4b758f89f1a75827143e69c;hpb=d79d108cf41b2552d07f9219190fcf527cf5d264;p=yaz-moved-to-github.git diff --git a/retrieval/d1_read.c b/retrieval/d1_read.c index a6e21cd..6ff7445 100644 --- a/retrieval/d1_read.c +++ b/retrieval/d1_read.c @@ -4,7 +4,27 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_read.c,v $ - * Revision 1.26 1999-07-13 13:23:48 adam + * Revision 1.32 2000-01-06 11:25:59 adam + * Added case to prevent warning. + * + * Revision 1.31 1999/12/21 14:16:20 ian + * Changed retrieval module to allow data1 trees with no associated absyn. + * Also added a simple interface for extracting values from data1 trees using + * a string based tagpath. + * + * Revision 1.30 1999/11/30 13:47:12 adam + * Improved installation. Moved header files to include/yaz. + * + * Revision 1.29 1999/10/21 12:06:29 adam + * Retrieval module no longer uses ctype.h - functions. + * + * Revision 1.28 1999/10/21 09:50:33 adam + * SGML reader uses own isspace - it doesn't do 8-bit on WIN32! + * + * Revision 1.27 1999/08/27 09:40:32 adam + * Renamed logf function to yaz_log. Removed VC++ project files. + * + * Revision 1.26 1999/07/13 13:23:48 adam * Non-recursive version of data1_read_node. data1_read_nodex reads * stream of bytes (instead of buffer in memory). * @@ -143,13 +163,12 @@ */ #include -#include #include #include -#include -#include -#include +#include +#include +#include /* * get the tag which is the immediate parent of this node (this may mean @@ -292,7 +311,7 @@ data1_node *data1_read_nodex (data1_handle dh, NMEM m, while (1) { data1_node *parent = level ? d1_stack[level-1] : 0; - while (c != '\0' && isspace(c)) + while (c != '\0' && d1_isspace(c)) { if (c == '\n') line++; @@ -307,11 +326,11 @@ data1_node *data1_read_nodex (data1_handle dh, NMEM m, char args[256]; size_t i; - for (i = 0; (c=(*get_byte)(fh)) && c != '>' && !isspace(c);) + for (i = 0; (c=(*get_byte)(fh)) && c != '>' && !d1_isspace(c);) if (i < (sizeof(tag)-1)) tag[i++] = c; tag[i] = '\0'; - while (isspace(c)) + while (d1_isspace(c)) c = (*get_byte)(fh); for (i = 0; c && c != '>'; c = (*get_byte)(fh)) if (i < (sizeof(args)-1)) @@ -319,7 +338,7 @@ data1_node *data1_read_nodex (data1_handle dh, NMEM m, args[i] = '\0'; if (c != '>') { - logf(LOG_WARN, "d1: %d: Malformed tag", line); + yaz_log(LOG_WARN, "d1: %d: Malformed tag", line); return 0; } else @@ -347,8 +366,8 @@ data1_node *data1_read_nodex (data1_handle dh, NMEM m, } if (i != level) { - logf (LOG_WARN, "%d: no begin tag for %s", - line, tag); + yaz_log (LOG_WARN, "%d: no begin tag for %s", + line, tag); break; } } @@ -360,9 +379,8 @@ data1_node *data1_read_nodex (data1_handle dh, NMEM m, { if (!(absyn = data1_get_absyn (dh, tag))) { - logf(LOG_WARN, "Unable to acquire abstract syntax " - "for '%s'", tag); - return 0; + yaz_log(LOG_WARN, "Unable to acquire abstract syntax " "for '%s'", tag); + /* It's now OK for a record not to have an absyn */ } res = data1_mk_node (dh, m); res->which = DATA1N_root; @@ -378,7 +396,7 @@ data1_node *data1_read_nodex (data1_handle dh, NMEM m, if (sscanf(args, "%s %s %n", tclass, type, &val_offset) != 2) { - logf(LOG_WARN, "Malformed variant triple at '%s'", tag); + yaz_log(LOG_WARN, "Malformed variant triple at '%s'", tag); continue; } if (!(tp = @@ -497,7 +515,7 @@ data1_node *data1_read_nodex (data1_handle dh, NMEM m, { if (*src == '\n') line++; - if (isspace (*src)) + if (d1_isspace (*src)) prev_char = ' '; else { @@ -528,7 +546,7 @@ data1_node *data1_read_node (data1_handle dh, const char **buf, NMEM m) WRBUF wrbuf = wrbuf_alloc(); data1_node *node; - node = data1_read_nodex(dh, m, getc_mem, buf, wrbuf); + node = data1_read_nodex(dh, m, getc_mem, (void *) (buf), wrbuf); wrbuf_free (wrbuf, 1); return node; }