[PATCH 4/6] Parse time on only one place in DLF import

Anton Lundin glance at acc.umu.se
Sun Dec 28 14:38:42 PST 2014


Signed-off-by: Anton Lundin <glance at acc.umu.se>
---
 parse-xml.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/parse-xml.c b/parse-xml.c
index a14c3e7..e8589fa 100644
--- a/parse-xml.c
+++ b/parse-xml.c
@@ -2535,6 +2535,7 @@ int parse_dlf_buffer(unsigned char *buffer, size_t size)
 {
 	unsigned char *ptr = buffer;
 	bool event, found;
+	unsigned int time = 0;
 	int i;
 
 	target_table = &dive_table;
@@ -2545,15 +2546,16 @@ int parse_dlf_buffer(unsigned char *buffer, size_t size)
 	dive_start();
 
 	while (ptr < buffer + size) {
+		time = ((ptr[0] >> 4) & 0x0f) +
+			((ptr[1] << 4) & 0xff0) +
+			(ptr[2] & 0x0f) * 3600; /* hours */
 		event = ptr[0] & 0x0f;
 		if (event == 1) {
 			/* dive event */
 			switch(ptr[4]) {
 			case 5:
 				event_start();
-				cur_event.time.seconds = ((ptr[0] >> 4) & 0x0f) +
-					((ptr[1] << 4) & 0xff0) +
-					(ptr[2] & 0x0f) * 3600; /* hours */
+				cur_event.time.seconds = time;
 				strcpy(cur_event.name, "gaschange");
 				cur_event.type = 25;
 				cur_event.value = ptr[6];
@@ -2573,13 +2575,11 @@ int parse_dlf_buffer(unsigned char *buffer, size_t size)
 				}
 				break;
 			default:
-				fprintf(stderr, "DEBUG (event): %d\n", ptr[4]);
+				fprintf(stderr, "DEBUG (event): %d at time %d\n", ptr[4], time);
 			}
 		} else {
 			sample_start();
-			cur_sample->time.seconds = ((ptr[0] >> 4) & 0x0f) +
-				((ptr[1] << 4) & 0xff0) +
-				(ptr[2] & 0x0f) * 3600; /* hours */
+			cur_sample->time.seconds = time;
 			cur_sample->depth.mm = ((ptr[4] & 0xff) + ((ptr[5] << 8) & 0xff00)) * 10;
 			sample_end();
 		}
-- 
2.1.0



More information about the subsurface mailing list