diff options
author | Sergey Starosek <sergey.starosek@gmail.com> | 2014-07-16 12:57:29 +0400 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-07-16 09:14:27 -0700 |
commit | b87a602265c3c514dc47fde97f1669e368b4490d (patch) | |
tree | eff429533c90f60cb81061e0bae9f29035c7cd44 | |
parent | 32a76671eddc48e846a17acee09e82b97982dd4e (diff) | |
download | subsurface-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>
-rw-r--r-- | dive.h | 1 | ||||
-rw-r--r-- | save-xml.c | 19 |
2 files changed, 11 insertions, 9 deletions
@@ -36,6 +36,7 @@ static inline char *copy_string(const char *s) #include <libxml/tree.h> #include <libxslt/transform.h> +#include <libxslt/xsltutils.h> #include "sha1.h" #include "units.h" 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; } |