diff --git a/dive.h b/dive.h index e2442818c..da97e012a 100644 --- a/dive.h +++ b/dive.h @@ -36,6 +36,7 @@ static inline char *copy_string(const char *s) #include #include +#include #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; }