summaryrefslogtreecommitdiffstats
path: root/parse-xml.c
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2012-11-21 15:34:04 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2012-11-21 15:34:04 -0800
commit10ce60e2120419282ff7694e8deda60e94832aa1 (patch)
tree6ea6a96da0b4209879e20b429672ae73b79a8ebb /parse-xml.c
parentd872a5c8aab858fa7a06b6f91f2dda57a43a6306 (diff)
downloadsubsurface-10ce60e2120419282ff7694e8deda60e94832aa1.tar.gz
Fix "prefer download" behavior
When this was first implemented the assumption was that a downloaded dive that is to be merged with an existing dive would have the same time stamp. But as Linus pointed out even back then, this does fail if a dive has been merged with a download from a different dive computer before (think: download from computer a, then download same dive from b, then improve something in the parsing from computer a and try to redownload; the time stamp could have changed). This commit also fixes a silly omission in the merge_dives() function (which ended up ALWAYS prefering the downloaded dive) and finally implements the necessary changes to mark dives downloaded from a Uemis SDA as well. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'parse-xml.c')
-rw-r--r--parse-xml.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/parse-xml.c b/parse-xml.c
index 15138f43e..04d39643b 100644
--- a/parse-xml.c
+++ b/parse-xml.c
@@ -168,6 +168,7 @@ static struct {
} cur_event;
static struct tm cur_tm;
static int cur_cylinder_index, cur_ws_index;
+static gboolean from_download;
static enum import_source {
UNKNOWN,
@@ -1219,6 +1220,7 @@ static void dive_start(void)
add_dive_to_trip(cur_dive, cur_trip);
cur_dive->tripflag = IN_TRIP;
}
+ cur_dive->downloaded = from_download;
}
static void dive_end(void)
@@ -1499,9 +1501,10 @@ static void reset_all(void)
import_source = UNKNOWN;
}
-void parse_xml_buffer(const char *url, const char *buffer, int size, GError **error)
+void parse_xml_buffer(const char *url, const char *buffer, int size, gboolean downloaded, GError **error)
{
xmlDoc *doc;
+ from_download = downloaded;
doc = xmlReadMemory(buffer, size, url, NULL, 0);
if (!doc) {