summaryrefslogtreecommitdiffstats
path: root/subsurface-core/load-git.c
diff options
context:
space:
mode:
authorGravatar Miika Turkia <miika.turkia@gmail.com>2016-01-30 12:57:19 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-01-31 13:06:39 -0800
commit448abec769daa1b9d7eebc6b52e780225aa7b98a (patch)
tree9984d1713feb2b8df64399b2009e1c3b17ea5945 /subsurface-core/load-git.c
parentcba50ece33e348ed3be5cac3668cfc2bbd30bfdd (diff)
downloadsubsurface-448abec769daa1b9d7eebc6b52e780225aa7b98a.tar.gz
Mark CCR dive's divetype properly
We used to mark CCR dives by having "SP change" event at time 0:00. As we nowadays mark CCR dives by setting dc->divemode appropriately, better to convert the old dives to this format as well. This way we do not have to take the special old format into account on multiple places in the source. Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'subsurface-core/load-git.c')
-rw-r--r--subsurface-core/load-git.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/subsurface-core/load-git.c b/subsurface-core/load-git.c
index f6b9f73aa..de7af80bf 100644
--- a/subsurface-core/load-git.c
+++ b/subsurface-core/load-git.c
@@ -9,6 +9,7 @@
#include <unistd.h>
#include <fcntl.h>
#include <git2.h>
+#include <libdivecomputer/parser.h>
#include "gettext.h"
@@ -744,6 +745,16 @@ static void parse_dc_event(char *line, struct membuffer *str, void *_dc)
if (str->len)
name = mb_cstring(str);
ev = add_event(dc, event.time.seconds, event.type, event.flags, event.value, name);
+
+ /*
+ * Older logs might mark the dive to be CCR by having an "SP change" event at time 0:00.
+ * Better to mark them being CCR on import so no need for special treatments elsewhere on
+ * the code.
+ */
+ if (ev && event.time.seconds == 0 && event.type == SAMPLE_EVENT_PO2 && dc->divemode==OC) {
+ dc->divemode = CCR;
+ }
+
if (ev && event_is_gaschange(ev)) {
/*
* We subtract one here because "0" is "no index",