diff options
Diffstat (limited to 'save-xml.c')
-rw-r--r-- | save-xml.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/save-xml.c b/save-xml.c index 3464cd6d3..b797475e5 100644 --- a/save-xml.c +++ b/save-xml.c @@ -284,6 +284,18 @@ static void save_events(FILE *f, struct event *ev) } } +static void save_trip(FILE *f, struct dive *trip) +{ + struct tm *tm = gmtime(&trip->when); + + fprintf(f, "<trip"); + fprintf(f, " date='%04u-%02u-%02u'", + tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday); + if (trip->location) + show_utf8(f, trip->location, " location=\'","\'", 1); + fprintf(f, " />\n"); +} + static void save_dive(FILE *f, struct dive *dive) { int i; @@ -292,6 +304,8 @@ static void save_dive(FILE *f, struct dive *dive) fputs("<dive", f); if (dive->number) fprintf(f, " number='%d'", dive->number); + if (dive->tripflag != TF_NONE) + fprintf(f, " tripflag='%s'", tripflag_names[dive->tripflag]); if (dive->rating) fprintf(f, " rating='%d'", dive->rating); fprintf(f, " date='%04u-%02u-%02u'", @@ -314,6 +328,8 @@ static void save_dive(FILE *f, struct dive *dive) void save_dives(const char *filename) { int i; + GList *trip = NULL; + FILE *f = fopen(filename, "w"); if (!f) @@ -323,6 +339,12 @@ void save_dives(const char *filename) update_dive(current_dive); fprintf(f, "<dives>\n<program name='subsurface' version='%d'></program>\n", VERSION); + + /* save the trips */ + while ((trip = NEXT_TRIP(trip, dive_trip_list)) != 0) + save_trip(f, trip->data); + + /* save the dives */ for (i = 0; i < dive_table.nr; i++) save_dive(f, get_dive(i)); fprintf(f, "</dives>\n"); |