]> git.tdb.fi Git - ext/subsurface.git/blobdiff - save-xml.c
Fix wrongly nested watertemp xml entry
[ext/subsurface.git] / save-xml.c
index cd7bad2bad547e652529a301ab8dba9dee3f55cd..a1553193d63965212a13f16def8be0f323b0a011 100644 (file)
@@ -44,6 +44,10 @@ static void show_pressure(FILE *f, pressure_t pressure, const char *pre, const c
  * We're outputting utf8 in xml.
  * We need to quote the characters <, >, &.
  *
+ * Technically I don't think we'd necessarily need to quote the control
+ * characters, but at least libxml2 doesn't like them. It doesn't even
+ * allow them quoted. So we just skip them and replace them with '?'.
+ *
  * Nothing else (and if we ever do this using attributes, we'd need to
  * quote the quotes we use too).
  */
@@ -60,6 +64,11 @@ static void quote(FILE *f, const char *text)
                case 0:
                        escape = NULL;
                        break;
+               case 1 ... 8:
+               case 11: case 12:
+               case 14 ... 31:
+                       escape = "?";
+                       break;
                case '<':
                        escape = "&lt;";
                        break;
@@ -102,7 +111,7 @@ static void save_overview(FILE *f, struct dive *dive)
        show_depth(f, dive->maxdepth, "  <maxdepth>", "</maxdepth>\n");
        show_depth(f, dive->meandepth, "  <meandepth>", "</meandepth>\n");
        show_temperature(f, dive->airtemp, "  <airtemp>", "</airtemp>\n");
-       show_temperature(f, dive->watertemp, "  <watertemp>", "</airtemp>\n");
+       show_temperature(f, dive->watertemp, "  <watertemp>", "</watertemp>\n");
        show_duration(f, dive->duration, "  <duration>", "</duration>\n");
        show_duration(f, dive->surfacetime, "  <surfacetime>", "</surfacetime>\n");
        show_pressure(f, dive->beginning_pressure, "  <cylinderstartpressure>", "</cylinderstartpressure>\n");