diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-09-30 12:36:18 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2012-09-30 12:36:18 -0700 |
commit | 3244a828f3df9b0403db7de742de399edcb395bb (patch) | |
tree | 2d87c17db616796fc030b4dac14c10922ea0a638 /parse-xml.c | |
parent | 946d9c7166f0690689f7a1078952a1ca0844fefb (diff) | |
download | subsurface-3244a828f3df9b0403db7de742de399edcb395bb.tar.gz |
New XML format for saving dives
This patch makes the trips nest, and it also fixes the fact that you never
saved the trip notes (you could edit it, but saving would throw it away).
I did *not* change the indentation of the dives, so the trip stuff shows
up the the beginning of the line, at the same level as the <dive> and
<dives> thing. I think it's fairly readable xml, though, and we haven't
really had proper "indentation shows nesting" anyway, since the top-level
"<dives>" thing also didn't indent stuff inside of it.
Anyway, the way I wrote it, it still parses your old "INTRIP" stuff etc,
so as far as I know, it should happily read the old-style XML too. At
least it seemed to work with your xml file that already had the old-style
one (I haven't committed my divetrips, exactly because I didn't like the
new format).
It always saves in the new style, though.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'parse-xml.c')
-rw-r--r-- | parse-xml.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/parse-xml.c b/parse-xml.c index 90ad91c79..44ef45746 100644 --- a/parse-xml.c +++ b/parse-xml.c @@ -1171,13 +1171,20 @@ static void dive_start(void) return; cur_dive = alloc_dive(); memset(&cur_tm, 0, sizeof(cur_tm)); + if (cur_trip) { + cur_dive->divetrip = cur_trip; + cur_dive->tripflag = IN_TRIP; + } } static void dive_end(void) { - if (!is_dive()) + if (!cur_dive) return; - record_dive(cur_dive); + if (!is_dive()) + free(cur_dive); + else + record_dive(cur_dive); cur_dive = NULL; cur_cylinder_index = 0; cur_ws_index = 0; @@ -1187,6 +1194,7 @@ static void trip_start(void) { if (cur_trip) return; + dive_end(); cur_trip = calloc(sizeof(dive_trip_t),1); memset(&cur_tm, 0, sizeof(cur_tm)); } @@ -1262,14 +1270,14 @@ static void entry(const char *name, int size, const char *raw) try_to_fill_sample(cur_sample, name, buf); return; } - if (cur_trip) { - try_to_fill_trip(&cur_trip, name, buf); - return; - } if (cur_dive) { try_to_fill_dive(&cur_dive, name, buf); return; } + if (cur_trip) { + try_to_fill_trip(&cur_trip, name, buf); + return; + } free(buf); } |