/*
- * Copyright (c) 1995, Index Data.
+ * Copyright (c) 1995-2002, Index Data.
* See the file LICENSE for details.
* Sebastian Hammer, Adam Dickmeiss
*
- * $Log: d1_sutrs.c,v $
- * Revision 1.2 1995-11-01 13:54:49 quinn
- * Minor adjustments
- *
- * Revision 1.1 1995/11/01 11:56:09 quinn
- * Added Retrieval (data management) functions en masse.
- *
+ * $Id: d1_sutrs.c,v 1.7 2002-05-03 13:48:27 adam Exp $
*
*/
-#include <ctype.h>
-
-#include <wrbuf.h>
-
-#include <data1.h>
+#include <yaz/data1.h>
#define NTOBUF_INDENT 2
#define NTOBUF_MARGIN 75
-static int wordlen(char *b)
+static int wordlen(char *b, int i)
{
int l = 0;
- while (*b && !isspace(*b))
- l++, b++;
+ while (i && !d1_isspace(*b))
+ l++, b++, i--;
return l;
}
int l = c->u.data.len;
int first = 0;
- if (c->u.data.what == DATA1I_text)
+ if (c->u.data.what == DATA1I_text && c->u.data.formatted_text)
+ {
+ wrbuf_putc(b, '\n');
+ wrbuf_write(b, c->u.data.data, c->u.data.len);
+ sprintf(line, "%*s", indent * NTOBUF_INDENT, "");
+ wrbuf_write(b, line, strlen(line));
+ col = indent * NTOBUF_INDENT;
+ }
+ else if (c->u.data.what == DATA1I_text)
{
while (l)
{
int wlen;
- while (l && isspace(*p))
+ while (l && d1_isspace(*p))
p++, l--;
if (!l)
break;
/* break if we'll cross margin and word is not too long */
- if (col + (wlen = wordlen(p)) > NTOBUF_MARGIN && wlen <
+ if (col + (wlen = wordlen(p, l)) > NTOBUF_MARGIN && wlen <
NTOBUF_MARGIN - indent * NTOBUF_INDENT)
{
sprintf(line, "\n%*s", indent * NTOBUF_INDENT, "");
wrbuf_putc(b, ' ');
col++;
}
- while (l && !isspace(*p))
+ while (l && !d1_isspace(*p))
{
if (col > NTOBUF_MARGIN)
{
* need changing.
*/
-char *data1_nodetobuf(data1_node *n, int select, int *len)
+char *data1_nodetobuf (data1_handle dh, data1_node *n, int select, int *len)
{
- static WRBUF b = 0;
+ WRBUF b = data1_get_wrbuf (dh);
- if (!b)
- b = wrbuf_alloc();
- else
- wrbuf_rewind(b);
+ wrbuf_rewind(b);
if (nodetobuf(n, select, b, 0, 0))
return 0;
wrbuf_putc(b, '\n');