X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=retrieval%2Fd1_write.c;h=b884248c64c473c425d6ec65001167f5e6ce7d11;hb=5b690aebb8dc2d05cad8f668de8fd821a1c231fa;hp=3114e409c73a5273fc375ee2767582e702d56ed5;hpb=e0b38a8744077e71e4673afc76a4e17546eb01a2;p=yaz-moved-to-github.git diff --git a/retrieval/d1_write.c b/retrieval/d1_write.c index 3114e40..b884248 100644 --- a/retrieval/d1_write.c +++ b/retrieval/d1_write.c @@ -3,7 +3,7 @@ * See the file LICENSE for details. * Sebastian Hammer, Adam Dickmeiss * - * $Id: d1_write.c,v 1.18 2002-09-24 13:58:13 adam Exp $ + * $Id: d1_write.c,v 1.19 2002-10-08 20:14:44 adam Exp $ */ #include @@ -65,6 +65,28 @@ static void wrbuf_put_cdata(WRBUF b, const char *msg) wrbuf_write_cdata (b, msg, strlen(msg)); } +static void wrbuf_put_xattr(WRBUF b, data1_xattr *p) +{ + for (; p; p = p->next) + { + wrbuf_putc (b, ' '); + if (p->what == DATA1I_xmltext) + wrbuf_puts (b, p->name); + else + wrbuf_put_cdata (b, p->name); + if (p->value) + { + wrbuf_putc (b, '='); + wrbuf_putc (b, '"'); + if (p->what == DATA1I_text) + wrbuf_put_cdata (b, p->value); + else + wrbuf_puts (b, p->value); + wrbuf_putc (b, '"'); + } + } +} + static int nodetoidsgml(data1_node *n, int select, WRBUF b, int col, int pretty_format) { @@ -82,15 +104,7 @@ static int nodetoidsgml(data1_node *n, int select, WRBUF b, int col, indent (b, col); wrbuf_puts (b, "u.preprocess.target); - for (p = c->u.preprocess.attributes; p; p = p->next) - { - wrbuf_putc (b, ' '); - wrbuf_put_cdata (b, p->name); - wrbuf_putc (b, '='); - wrbuf_putc (b, '"'); - wrbuf_put_cdata (b, p->value); - wrbuf_putc (b, '"'); - } + wrbuf_put_xattr (b, c->u.preprocess.attributes); if (c->child) wrbuf_puts(b, " "); if (nodetoidsgml(c, select, b, (col > 40) ? 40 : col+2, @@ -116,15 +130,7 @@ static int nodetoidsgml(data1_node *n, int select, WRBUF b, int col, indent (b, col); wrbuf_puts (b, "<"); wrbuf_put_cdata (b, tag); - for (p = c->u.tag.attributes; p; p = p->next) - { - wrbuf_putc (b, ' '); - wrbuf_put_cdata (b, p->name); - wrbuf_putc (b, '='); - wrbuf_putc (b, '"'); - wrbuf_put_cdata (b, p->value); - wrbuf_putc (b, '"'); - } + wrbuf_put_xattr (b, c->u.tag.attributes); wrbuf_puts(b, ">"); if (pretty_format) wrbuf_puts(b, "\n"); @@ -153,6 +159,9 @@ static int nodetoidsgml(data1_node *n, int select, WRBUF b, int col, wrbuf_puts (b, "