* Copyright (C) 2005-2006, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: record_conv.c,v 1.2 2006-05-03 13:04:46 adam Exp $
+ * $Id: record_conv.c,v 1.6 2006-05-07 17:45:41 adam Exp $
*/
/**
* \file record_conv.c
/** \brief The internal structure for yaz_record_conv_t */
struct yaz_record_conv_struct {
- /** memory for configuration */
+ /** \brief memory for configuration */
NMEM nmem;
- /** conversion rules (allocated using NMEM) */
+ /** \brief conversion rules (allocated using NMEM) */
struct yaz_record_conv_rule *rules;
- /** pointer to last conversion rule pointer in chain */
+ /** \brief pointer to last conversion rule pointer in chain */
struct yaz_record_conv_rule **rules_p;
- /** string buffer for error messages */
+ /** \brief string buffer for error messages */
WRBUF wr_error;
- /** path for opening files */
+ /** \brief path for opening files */
char *path;
};
YAZ_RECORD_CONV_RULE_MARC
};
+
/** \brief tranformation info (rule info) */
struct yaz_record_conv_rule {
enum YAZ_RECORD_CONV_RULE which;
struct yaz_record_conv_rule *next;
};
-/** reset rules+configuration */
+/** \brief reset rules+configuration */
static void yaz_record_conv_reset(yaz_record_conv_t p)
{
struct yaz_record_conv_rule *r;
}
}
+/** \brief adds a rule */
static struct yaz_record_conv_rule *add_rule(yaz_record_conv_t p,
enum YAZ_RECORD_CONV_RULE type)
{
return r;
}
+/** \brief parse 'xslt' conversion node */
static int conv_xslt(yaz_record_conv_t p, const xmlNode *ptr)
{
struct _xmlAttr *attr;
stylesheet = (const char *) attr->children->content;
else
{
- wrbuf_printf(p->wr_error, "Bad attribute '%s'."
+ wrbuf_printf(p->wr_error, "Bad attribute '%s'"
"Expected stylesheet.", attr->name);
return -1;
}
return 0;
}
+/** \brief parse 'marc' conversion node */
static int conv_marc(yaz_record_conv_t p, const xmlNode *ptr)
{
struct _xmlAttr *attr;
output_format = (const char *) attr->children->content;
else
{
- wrbuf_printf(p->wr_error, "Bad attribute '%s'.", attr->name);
+ wrbuf_printf(p->wr_error, "Bad attribute '%s'", attr->name);
return -1;
}
}
else
{
wrbuf_printf(p->wr_error, "Bad element '%s'."
- "Expected marc, xslt, ..", ptr->name);
+ "Expected marc, xslt, ..", ptr->name);
return -1;
}
}
return 0;
}
-int yaz_record_conv_record(yaz_record_conv_t p, const char *input_record,
+int yaz_record_conv_record(yaz_record_conv_t p,
+ const char *input_record_buf,
+ size_t input_record_len,
WRBUF output_record)
{
int ret = 0;
struct yaz_record_conv_rule *r = p->rules;
wrbuf_rewind(p->wr_error);
- wrbuf_puts(record, input_record);
+ wrbuf_write(record, input_record_buf, input_record_len);
for (; ret == 0 && r; r = r->next)
{
if (r->which == YAZ_RECORD_CONV_RULE_XSLT)
return ret;
}
-#else
-/* !HAVE_XSLT */
-int yaz_record_conv_configure(yaz_record_conv_t p, const void *ptr_v)
-{
- wrbuf_rewind(p->wr_error);
- wrbuf_printf(p->wr_error, "No XML support: yaz_record_conv_configure");
- return -1;
-}
-
-int yaz_record_conv_record(yaz_record_conv_t p, const char *input_record,
- WRBUF output_record);
-{
- wrbuf_rewind(p->wr_error);
- wrbuf_printf(p->wr_error, "No XML support: yaz_record_conv_record");
- return -1;
-}
-
-#endif
-
const char *yaz_record_conv_get_error(yaz_record_conv_t p)
{
return wrbuf_buf(p->wr_error);
void yaz_record_conv_set_path(yaz_record_conv_t p, const char *path)
{
- if (p)
- {
- xfree(p->path);
- p->path = 0;
- if (path)
- p->path = xstrdup(path);
- }
+ xfree(p->path);
+ p->path = 0;
+ if (path)
+ p->path = xstrdup(path);
}
+#endif
/*
* Local variables: