New source grs1disp.c
[yaz-moved-to-github.git] / retrieval / d1_prtree.c
index e5df6fe..4354b30 100644 (file)
@@ -3,7 +3,7 @@
  * See the file LICENSE for details.
  * Sebastian Hammer, Adam Dickmeiss
  *
- * $Id: d1_prtree.c,v 1.7 2002-01-26 19:20:25 adam Exp $
+ * $Id: d1_prtree.c,v 1.11 2002-10-08 20:14:44 adam Exp $
  */
 
 #include <yaz/log.h>
@@ -16,7 +16,7 @@ static void pr_string (FILE *out, const char *str, int len)
     {
        int c = str[i];
        if (c < 32 || c >126)
-           fprintf (out, "\\x%02x", c);
+           fprintf (out, "\\x%02x", c & 255);
        else
            fputc (c, out);
     }
@@ -27,12 +27,12 @@ static void pr_tree (data1_handle dh, data1_node *n, FILE *out, int level)
     fprintf (out, "%*s", level, "");
     switch (n->which)
     {
-     case DATA1N_root:
-         fprintf (out, "root abstract syntax=%s\n", n->u.root.type);
-         break;
+    case DATA1N_root:
+        fprintf (out, "root abstract syntax=%s\n", n->u.root.type);
+        break;
     case DATA1N_tag:
-       fprintf (out, "tag type=%s\n", n->u.tag.tag);
-#if DATA1_USING_XATTR
+       fprintf (out, "tag type=%s sel=%d\n", n->u.tag.tag,
+                 n->u.tag.node_selected);
         if (n->u.tag.attributes)
         {
             data1_xattr *xattr = n->u.tag.attributes;
@@ -41,10 +41,13 @@ static void pr_tree (data1_handle dh, data1_node *n, FILE *out, int level)
                 fprintf (out, " %s=%s ", xattr->name, xattr->value);
             fprintf (out, "\n");
         }
-#endif
        break;
     case DATA1N_data:
-       fprintf (out, "data type=");
+    case DATA1N_comment:
+        if (n->which == DATA1N_data)
+            fprintf (out, "data type=");
+        else
+            fprintf (out, "comment type=");
        switch (n->u.data.what)
        {
        case DATA1I_inctxt:
@@ -68,11 +71,27 @@ static void pr_tree (data1_handle dh, data1_node *n, FILE *out, int level)
            pr_string (out, n->u.data.data, n->u.data.len);
            fprintf (out, "'\n");
            break;
+       case DATA1I_xmltext:
+           fprintf (out, "xml text '");
+           pr_string (out, n->u.data.data, n->u.data.len);
+           fprintf (out, "'\n");
+            break;
        default:
            fprintf (out, "unknown(%d)\n", n->u.data.what);
            break;
        }
        break;
+    case DATA1N_preprocess:
+       fprintf (out, "preprocess target=%s\n", n->u.preprocess.target);
+        if (n->u.preprocess.attributes)
+        {
+            data1_xattr *xattr = n->u.preprocess.attributes;
+            fprintf (out, "%*s attr", level, "");
+            for (; xattr; xattr = xattr->next)
+                fprintf (out, " %s=%s ", xattr->name, xattr->value);
+            fprintf (out, "\n");
+        }
+       break;
     case DATA1N_variant:
        fprintf (out, "variant\n");
 #if 0