summaryrefslogtreecommitdiffstats
path: root/save-xml.c
diff options
context:
space:
mode:
authorGravatar Sergey Starosek <sergey.starosek@gmail.com>2014-07-16 12:57:29 +0400
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-07-16 09:14:27 -0700
commitb87a602265c3c514dc47fde97f1669e368b4490d (patch)
treeeff429533c90f60cb81061e0bae9f29035c7cd44 /save-xml.c
parent32a76671eddc48e846a17acee09e82b97982dd4e (diff)
downloadsubsurface-b87a602265c3c514dc47fde97f1669e368b4490d.tar.gz
Suppress XML preamble in CSV export
To obey <xsl:output omit-xml-declaration="yes"/> element one should rely on libxslt to do its job instead of writing document himself. Discussion on this subject can be found at http://comments.gmane.org/gmane.comp.gnome.lib.xslt/3839 Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'save-xml.c')
-rw-r--r--save-xml.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/save-xml.c b/save-xml.c
index 0a76753c6..fe804cb6d 100644
--- a/save-xml.c
+++ b/save-xml.c
@@ -594,7 +594,7 @@ int export_dives_xslt(const char *filename, const bool selected, const char *exp
xmlDoc *doc;
xsltStylesheetPtr xslt = NULL;
xmlDoc *transformed;
-
+ int res = 0;
if (!filename)
return report_error("No filename for export");
@@ -618,18 +618,19 @@ int export_dives_xslt(const char *filename, const bool selected, const char *exp
return report_error("Failed to open export conversion stylesheet");
transformed = xsltApplyStylesheet(xslt, doc, NULL);
- xsltFreeStylesheet(xslt);
xmlFreeDoc(doc);
/* Write the transformed export to file */
f = subsurface_fopen(filename, "w");
- if (!f)
- return report_error("Failed to open %s for writing (%s)", filename, strerror(errno));
-
- xmlDocFormatDump(f, transformed, 1);
+ if (f) {
+ xsltSaveResultToFile(f, transformed, xslt);
+ fclose(f);
+ /* Check write errors? */
+ } else {
+ res = report_error("Failed to open %s for writing (%s)", filename, strerror(errno));
+ }
+ xsltFreeStylesheet(xslt);
xmlFreeDoc(transformed);
- fclose(f);
- /* Check write errors? */
- return 0;
+ return res;
}