if (res)
{
xmlDoc *doc = xmlParseMemory(res, strlen(res));
- xmlNode *nptr;
if (doc)
{
- nptr = xmlCopyNode(xmlDocGetRootElement(doc), 1);
+ xmlNode *nptr = xmlCopyNode(xmlDocGetRootElement(doc), 1);
xmlReplaceNode(ptr, nptr);
xmlFreeDoc(doc);
}
else
{
- nptr = xmlNewText(BAD_CAST res);
+ xmlNode *nptr = xmlNewText(BAD_CAST res);
xmlReplaceNode(ptr, nptr);
}
ret = 0;
const char *ret = 0;
NMEM nmem = 0;
char *base64_xpath = 0;
- char *base64_type_spec = 0;
size_t i;
char type[40];
char charset[40];
}
format[j] = '\0';
}
- else if (!strncmp(cp + i, "base64", 6))
+ else if (!strncmp(cp + i, "base64=", 7))
{
- i = i + 6;
+ size_t i0;
+ i = i + 7;
- while (cp[i] == ' ')
- i++;
- if (cp[i] == '(')
- {
- size_t i0;
- nmem = nmem_create();
+ i0 = i;
+ while (cp[i] && cp[i] != ';')
i++;
- while (cp[i] == ' ')
- i++;
- i0 = i;
- while (cp[i] != ',' && cp[i])
- i++;
- base64_xpath = nmem_strdupn(nmem, cp + i0, i - i0);
- if (cp[i])
- i++;
- while (cp[i] == ' ')
- i++;
- i0 = i;
- while (cp[i] != ')' && cp[i])
- i++;
- base64_type_spec = nmem_strdupn(nmem, cp + i0, i - i0);
- if (cp[i])
- i++;
- }
+
+ nmem = nmem_create();
+ base64_xpath = nmem_strdupn(nmem, cp + i0, i - i0);
}
}
if (!strcmp(type, "database"))
}
if (base64_xpath)
- ret = base64_render(nmem, wrbuf,
- ret, len, base64_xpath, base64_type_spec);
+ {
+ char *type_spec = nmem_malloc(nmem,
+ strlen(format) + strlen(charset) + 11);
+ strcpy(type_spec, type);
+ if (*charset)
+ {
+ strcat(type_spec, "; charset=");
+ strcat(type_spec, charset);
+ }
+ ret = base64_render(nmem, wrbuf, ret, len, base64_xpath, type_spec);
+ }
nmem_destroy(nmem);
return ret;
}
YAZ_CHECK(test_render("xml", 0, "<my/>", "<my/>"));
YAZ_CHECK(test_render(
- "xml; base64(/my/text(),xml)", 0,
+ "xml; base64=/my/text()", 0,
"<my>"
"MDAxMzhuYW0gIDIyMDAwNzM4YSA0NTAwMDAxMDAxMzAwMDAwMDAzMDAwNDAwMDEzMTAwMDAxNzAw"
"MDE3MjQ1MDAzMDAwMDM0HiAgIDExMjI0NDY2IB5ETEMeMTAfYUphY2sgQ29sbGlucx4xMB9hSG93"
"</record></my>\n"));
YAZ_CHECK(test_render(
- "xml; charset=utf-8; base64(/my/text(),xml)", 0,
+ "xml; charset=utf-8; base64=/my/text()", 0,
"<my>"
"MDAxMzhuYW0gIDIyMDAwNzM4YSA0NTAwMDAxMDAxMzAwMDAwMDAzMDAwNDAwMDEzMTAwMDAxNzAw"
"MDE3MjQ1MDAzMDAwMDM0HiAgIDExMjI0NDY2IB5ETEMeMTAfYUphY2sgQ29sbGlucx4xMB9hSG93"
"</record></my>\n"));
YAZ_CHECK(test_render(
- "xml; base64(/my/text(),xml);charset=utf-8", 0,
+ "xml; base64=/my/text();charset=utf-8", 0,
"<my>"
"MDAxMzhuYW0gIDIyMDAwNzM4YSA0NTAwMDAxMDAxMzAwMDAwMDAzMDAwNDAwMDEzMTAwMDAxNzAw"
"MDE3MjQ1MDAzMDAwMDM0HiAgIDExMjI0NDY2IB5ETEMeMTAfYUphY2sgQ29sbGlucx4xMB9hSG93"
"</record></my>\n"));
YAZ_CHECK(test_render(
- "xml; base64(/my/text(),txml;charset=utf-8)", 0,
+ "txml;base64=/my/text();charset=utf-8", 0,
"<my>"
"MDAxMzhuYW0gIDIyMDAwNzM4YSA0NTAwMDAxMDAxMzAwMDAwMDAzMDAwNDAwMDEzMTAwMDAxNzAw"
"MDE3MjQ1MDAzMDAwMDM0HiAgIDExMjI0NDY2IB5ETEMeMTAfYUphY2sgQ29sbGlucx4xMB9hSG93"