+ save_depths(f, dive);
+ save_temperatures(f, dive);
+ show_duration(f, dive->surfacetime, " <surfacetime>", "</surfacetime>\n");
+ show_location(f, dive);
+ show_utf8(f, dive->divemaster, " <divemaster>","</divemaster>\n", 0);
+ show_utf8(f, dive->buddy, " <buddy>","</buddy>\n", 0);
+ show_utf8(f, dive->notes, " <notes>","</notes>\n", 0);
+ show_utf8(f, dive->suit, " <suit>","</suit>\n", 0);
+}
+
+static void save_cylinder_info(FILE *f, struct dive *dive)
+{
+ int i;
+
+ for (i = 0; i < MAX_CYLINDERS; i++) {
+ cylinder_t *cylinder = dive->cylinder+i;
+ int volume = cylinder->type.size.mliter;
+ const char *description = cylinder->type.description;
+ int o2 = cylinder->gasmix.o2.permille;
+ int he = cylinder->gasmix.he.permille;
+ int start = cylinder->start.mbar;
+ int end = cylinder->end.mbar;
+
+ /* No cylinder information at all? */
+ if (!o2 && !volume && !start && !end)
+ return;
+ fprintf(f, " <cylinder");
+ if (volume)
+ show_milli(f, " size='", volume, " l", "'");
+ show_pressure(f, cylinder->type.workingpressure, " workpressure='", "'");
+ if (description && *description)
+ fprintf(f, " description='%s'", description);
+ if (o2) {
+ fprintf(f, " o2='%u.%u%%'", FRACTION(o2, 10));
+ if (he)
+ fprintf(f, " he='%u.%u%%'", FRACTION(he, 10));
+ }
+ show_pressure(f, cylinder->start, " start='", "'");
+ show_pressure(f, cylinder->end, " end='", "'");
+ fprintf(f, " />\n");
+ }