summaryrefslogtreecommitdiffstats
path: root/core/load-git.c
diff options
context:
space:
mode:
authorGravatar Willem Ferguson <willemferguson@zoology.up.ac.za>2018-04-07 14:56:37 +0200
committerGravatar Lubomir I. Ivanov <neolit123@gmail.com>2018-05-14 23:47:00 +0300
commitb9174332d562b8b9c436a94880c51acf2c5ab761 (patch)
treec6c08d8bc89c602e5f7c75be4fcf1b21777187f9 /core/load-git.c
parent5f95c226ef4d0def6aafc60a9f4880a3a3374167 (diff)
downloadsubsurface-b9174332d562b8b9c436a94880c51acf2c5ab761.tar.gz
Read and write divemode changes (xml and git)
This provides for reading of divemode change events from dive logs and for writing them to dive logs. This applies to xml and git divelogs. Divemode change events have the following structure: event->name = "modechange" event->value = integer corresponding to enum dive_comp_type (dive.c), reflecting the type of divemode change (OC, CCR, PSCR, etc). In the dive log file, the event value is written as a string that corresponds to each of the enum values, e.g. <event name='modechange' divemode='OC' /> This xml is also read from the dive log file and translated to an appropriate value of event->value. The file diveeventitem.cpp was udated to reflect this new way of dealing with divemode change events. Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Diffstat (limited to 'core/load-git.c')
-rw-r--r--core/load-git.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/core/load-git.c b/core/load-git.c
index 4af7221c3..67a2dfa29 100644
--- a/core/load-git.c
+++ b/core/load-git.c
@@ -723,6 +723,15 @@ static void parse_dc_time(char *line, struct membuffer *str, void *_dc)
static void parse_dc_watertemp(char *line, struct membuffer *str, void *_dc)
{ (void) str; struct divecomputer *dc = _dc; dc->watertemp = get_temperature(line); }
+
+int get_divemode(const char *divemodestring) {
+ for (int i = 0; i < NUM_DC_TYPE; i++) {
+ if (!strcmp(divemodestring, divemode_text[i]))
+ return i;
+ }
+ return 0;
+}
+
static void parse_event_keyvalue(void *_event, const char *key, const char *value)
{
struct event *event = _event;
@@ -736,6 +745,8 @@ static void parse_event_keyvalue(void *_event, const char *key, const char *valu
event->value = val;
} else if (!strcmp(key, "name")) {
/* We get the name from the string handling */
+ } else if (!strcmp(key,"divemode")) {
+ event->value = get_divemode(value);
} else if (!strcmp(key, "cylinder")) {
/* NOTE! We add one here as a marker that "yes, we got a cylinder index" */
event->gas.index = 1+get_index(value);