Changed because ccl_rpn_query sets attribute set.
[yaz-moved-to-github.git] / retrieval / d1_read.c
index a6e21cd..6ff7445 100644 (file)
@@ -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).
  *
  */
 
 #include <assert.h>
-#include <ctype.h>
 #include <stdio.h>
 #include <stdlib.h>
 
-#include <xmalloc.h>
-#include <log.h>
-#include <data1.h>
+#include <yaz/xmalloc.h>
+#include <yaz/log.h>
+#include <yaz/data1.h>
 
 /*
  * 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;
 }