mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Make the import source an enumeration
Instead of having each import source recognition routine set a separate flag for that import source, just enumerate them and set them in one variable. I'm adding yet another xml importer - divinglog. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
4f5e3a06ab
commit
89593a542a
1 changed files with 28 additions and 12 deletions
36
parse-xml.c
36
parse-xml.c
|
@ -91,9 +91,15 @@ static int alloc_samples;
|
||||||
static struct dive *dive;
|
static struct dive *dive;
|
||||||
static struct sample *sample;
|
static struct sample *sample;
|
||||||
static struct tm tm;
|
static struct tm tm;
|
||||||
static int suunto, uemis;
|
|
||||||
static int event_index, cylinder_index;
|
static int event_index, cylinder_index;
|
||||||
|
|
||||||
|
static enum import_source {
|
||||||
|
UNKNOWN,
|
||||||
|
LIBDIVECOMPUTER,
|
||||||
|
SUUNTO,
|
||||||
|
UEMIS,
|
||||||
|
} import_source;
|
||||||
|
|
||||||
static time_t utc_mktime(struct tm *tm)
|
static time_t utc_mktime(struct tm *tm)
|
||||||
{
|
{
|
||||||
static const int mdays[] = {
|
static const int mdays[] = {
|
||||||
|
@ -488,9 +494,14 @@ static void try_to_fill_sample(struct sample *sample, const char *name, char *bu
|
||||||
if (MATCH(".sample.time", sampletime, &sample->time))
|
if (MATCH(".sample.time", sampletime, &sample->time))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (uemis) {
|
switch (import_source) {
|
||||||
|
case UEMIS:
|
||||||
if (uemis_fill_sample(sample, name, len, buf))
|
if (uemis_fill_sample(sample, name, len, buf))
|
||||||
return;
|
return;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
nonmatch("sample", name, buf);
|
nonmatch("sample", name, buf);
|
||||||
|
@ -744,13 +755,20 @@ static void try_to_fill_dive(struct dive *dive, const char *name, char *buf)
|
||||||
if (MATCH(".he", gasmix, &dive->cylinder[cylinder_index].gasmix.he))
|
if (MATCH(".he", gasmix, &dive->cylinder[cylinder_index].gasmix.he))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Suunto XML files are some crazy sh*t. */
|
switch (import_source) {
|
||||||
if (suunto && suunto_dive_match(dive, name, len, buf))
|
case SUUNTO:
|
||||||
|
if (suunto_dive_match(dive, name, len, buf))
|
||||||
return;
|
return;
|
||||||
|
break;
|
||||||
|
|
||||||
if (uemis && uemis_dive_match(dive, name, len, buf))
|
case UEMIS:
|
||||||
|
if (uemis_dive_match(dive, name, len, buf))
|
||||||
return;
|
return;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
nonmatch("dive", name, buf);
|
nonmatch("dive", name, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -900,18 +918,17 @@ static void dive_end(void)
|
||||||
|
|
||||||
static void suunto_start(void)
|
static void suunto_start(void)
|
||||||
{
|
{
|
||||||
suunto++;
|
import_source = SUUNTO;
|
||||||
units = SI_units;
|
units = SI_units;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void suunto_end(void)
|
static void suunto_end(void)
|
||||||
{
|
{
|
||||||
suunto--;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void uemis_start(void)
|
static void uemis_start(void)
|
||||||
{
|
{
|
||||||
uemis++;
|
import_source = UEMIS;
|
||||||
units = SI_units;
|
units = SI_units;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1115,8 +1132,7 @@ static void reset_all(void)
|
||||||
* dive for that format.
|
* dive for that format.
|
||||||
*/
|
*/
|
||||||
units = SI_units;
|
units = SI_units;
|
||||||
suunto = 0;
|
import_source = UNKNOWN;
|
||||||
uemis = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void parse_xml_file(const char *filename)
|
void parse_xml_file(const char *filename)
|
||||||
|
|
Loading…
Add table
Reference in a new issue