* - Nitrox trumps air (even if hypoxic)
* These are the same rules as the inter-dive sorting rules.
*/
-static void get_dive_gas(struct dive *dive, int *o2, int *he, int *o2low)
+static void get_dive_gas(struct dive *dive, int *o2_p, int *he_p, int *o2low_p)
{
int i;
int maxo2 = -1, maxhe = -1, mino2 = 1000;
/* All air? Show/sort as "air"/zero */
if (!maxhe && maxo2 == AIR_PERMILLE && mino2 == maxo2)
maxo2 = mino2 = 0;
- *o2 = maxo2;
- *he = maxhe;
- *o2low = mino2;
+ *o2_p = maxo2;
+ *he_p = maxhe;
+ *o2low_p = mino2;
}
static gint nitrox_sort_func(GtkTreeModel *model,
sort_func_t sort;
unsigned int flags;
int *visible;
-} column[] = {
+} dl_column[] = {
[DIVE_NR] = { "#", NULL, NULL, ALIGN_RIGHT | UNSORTABLE },
[DIVE_DATE] = { "Date", date_data_func, NULL, ALIGN_LEFT },
[DIVE_RATING] = { UTF8_BLACKSTAR, star_data_func, NULL, ALIGN_LEFT },
static GtkTreeViewColumn *divelist_column(struct DiveList *dl, struct divelist_column *col)
{
- int index = col - &column[0];
+ int index = col - &dl_column[0];
const char *title = col->header;
data_func_t data_func = col->data;
sort_func_t sort_func = col->sort;
gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_MULTIPLE);
gtk_widget_set_size_request(dive_list.tree_view, 200, 200);
- dive_list.nr = divelist_column(&dive_list, column + DIVE_NR);
- dive_list.date = divelist_column(&dive_list, column + DIVE_DATE);
- dive_list.stars = divelist_column(&dive_list, column + DIVE_RATING);
- dive_list.depth = divelist_column(&dive_list, column + DIVE_DEPTH);
- dive_list.duration = divelist_column(&dive_list, column + DIVE_DURATION);
- dive_list.temperature = divelist_column(&dive_list, column + DIVE_TEMPERATURE);
- dive_list.cylinder = divelist_column(&dive_list, column + DIVE_CYLINDER);
- dive_list.nitrox = divelist_column(&dive_list, column + DIVE_NITROX);
- dive_list.sac = divelist_column(&dive_list, column + DIVE_SAC);
- dive_list.otu = divelist_column(&dive_list, column + DIVE_OTU);
- dive_list.location = divelist_column(&dive_list, column + DIVE_LOCATION);
+ dive_list.nr = divelist_column(&dive_list, dl_column + DIVE_NR);
+ dive_list.date = divelist_column(&dive_list, dl_column + DIVE_DATE);
+ dive_list.stars = divelist_column(&dive_list, dl_column + DIVE_RATING);
+ dive_list.depth = divelist_column(&dive_list, dl_column + DIVE_DEPTH);
+ dive_list.duration = divelist_column(&dive_list, dl_column + DIVE_DURATION);
+ dive_list.temperature = divelist_column(&dive_list, dl_column + DIVE_TEMPERATURE);
+ dive_list.cylinder = divelist_column(&dive_list, dl_column + DIVE_CYLINDER);
+ dive_list.nitrox = divelist_column(&dive_list, dl_column + DIVE_NITROX);
+ dive_list.sac = divelist_column(&dive_list, dl_column + DIVE_SAC);
+ dive_list.otu = divelist_column(&dive_list, dl_column + DIVE_OTU);
+ dive_list.location = divelist_column(&dive_list, dl_column + DIVE_LOCATION);
fill_dive_list();
/*
* Dive info as it is being built up..
*/
-static struct dive *dive;
-static struct sample *sample;
+static struct dive *cur_dive;
+static struct sample *cur_sample;
static struct {
int active;
duration_t time;
int type, flags, value;
const char *name;
-} event;
-static struct tm tm;
-static int cylinder_index;
+} cur_event;
+static struct tm cur_tm;
+static int cur_cylinder_index;
static enum import_source {
UNKNOWN,
time_t *when = _when;
int success = 0;
- success = tm.tm_sec | tm.tm_min | tm.tm_hour;
+ success = cur_tm.tm_sec | cur_tm.tm_min | cur_tm.tm_hour;
if (sscanf(buffer, "%d.%d.%d", &d, &m, &y) == 3) {
- tm.tm_year = y;
- tm.tm_mon = m-1;
- tm.tm_mday = d;
+ cur_tm.tm_year = y;
+ cur_tm.tm_mon = m-1;
+ cur_tm.tm_mday = d;
} else if (sscanf(buffer, "%d-%d-%d", &y, &m, &d) == 3) {
- tm.tm_year = y;
- tm.tm_mon = m-1;
- tm.tm_mday = d;
+ cur_tm.tm_year = y;
+ cur_tm.tm_mon = m-1;
+ cur_tm.tm_mday = d;
} else {
fprintf(stderr, "Unable to parse date '%s'\n", buffer);
success = 0;
}
if (success)
- *when = utc_mktime(&tm);
+ *when = utc_mktime(&cur_tm);
free(buffer);
}
time_t *when = _when;
if (sscanf(buffer, "%d:%d:%d", &h, &m, &s) >= 2) {
- tm.tm_hour = h;
- tm.tm_min = m;
- tm.tm_sec = s;
- if (tm.tm_year)
- *when = utc_mktime(&tm);
+ cur_tm.tm_hour = h;
+ cur_tm.tm_min = m;
+ cur_tm.tm_sec = s;
+ if (cur_tm.tm_year)
+ *when = utc_mktime(&cur_tm);
}
free(buffer);
}
if (sscanf(buffer, "%d-%d-%d %d:%d:%d",
&y, &m, &d, &hr, &min, &sec) == 6) {
- tm.tm_year = y;
- tm.tm_mon = m-1;
- tm.tm_mday = d;
- tm.tm_hour = hr;
- tm.tm_min = min;
- tm.tm_sec = sec;
- *when = utc_mktime(&tm);
+ cur_tm.tm_year = y;
+ cur_tm.tm_mon = m-1;
+ cur_tm.tm_mday = d;
+ cur_tm.tm_hour = hr;
+ cur_tm.tm_min = min;
+ cur_tm.tm_sec = sec;
+ *when = utc_mktime(&cur_tm);
}
free(buffer);
}
/* libdivecomputer does negative percentages. */
if (*buffer == '-')
return;
- if (cylinder_index < MAX_CYLINDERS)
+ if (cur_cylinder_index < MAX_CYLINDERS)
percent(buffer, _fraction);
}
{
duration_t *duration = _duration;
sampletime(buffer, duration);
- if (sample)
- duration->seconds += sample->time.seconds;
+ if (cur_sample)
+ duration->seconds += cur_sample->time.seconds;
}
static void try_to_fill_event(const char *name, char *buf)
int len = strlen(name);
start_match("event", name, buf);
- if (MATCH(".event", utf8_string, &event.name))
+ if (MATCH(".event", utf8_string, &cur_event.name))
return;
- if (MATCH(".name", utf8_string, &event.name))
+ if (MATCH(".name", utf8_string, &cur_event.name))
return;
- if (MATCH(".time", eventtime, &event.time))
+ if (MATCH(".time", eventtime, &cur_event.time))
return;
- if (MATCH(".type", get_index, &event.type))
+ if (MATCH(".type", get_index, &cur_event.type))
return;
- if (MATCH(".flags", get_index, &event.flags))
+ if (MATCH(".flags", get_index, &cur_event.flags))
return;
- if (MATCH(".value", get_index, &event.value))
+ if (MATCH(".value", get_index, &cur_event.value))
return;
nonmatch("event", name, buf);
}
static int uemis_cylinder_index(void *_cylinder)
{
cylinder_t *cylinder = _cylinder;
- unsigned int index = cylinder - dive->cylinder;
+ unsigned int index = cylinder - cur_dive->cylinder;
if (index > 6) {
fprintf(stderr, "Uemis cylinder pointer calculations broken\n");
{
int index = uemis_cylinder_index(_cylinder);
if (index >= 0)
- cylindersize(buffer, &dive->cylinder[index].type.size);
+ cylindersize(buffer, &cur_dive->cylinder[index].type.size);
}
static void uemis_percent(char *buffer, void *_cylinder)
{
int index = uemis_cylinder_index(_cylinder);
if (index >= 0)
- percent(buffer, &dive->cylinder[index].gasmix.o2);
+ percent(buffer, &cur_dive->cylinder[index].gasmix.o2);
}
static int uemis_dive_match(struct dive **divep, const char *name, int len, char *buf)
return;
if (MATCH(".rating", get_index, &dive->rating))
return;
- if (MATCH(".cylinder.size", cylindersize, &dive->cylinder[cylinder_index].type.size))
+ if (MATCH(".cylinder.size", cylindersize, &dive->cylinder[cur_cylinder_index].type.size))
return;
- if (MATCH(".cylinder.workpressure", pressure, &dive->cylinder[cylinder_index].type.workingpressure))
+ if (MATCH(".cylinder.workpressure", pressure, &dive->cylinder[cur_cylinder_index].type.workingpressure))
return;
- if (MATCH(".cylinder.description", utf8_string, &dive->cylinder[cylinder_index].type.description))
+ if (MATCH(".cylinder.description", utf8_string, &dive->cylinder[cur_cylinder_index].type.description))
return;
- if (MATCH(".cylinder.start", pressure, &dive->cylinder[cylinder_index].start))
+ if (MATCH(".cylinder.start", pressure, &dive->cylinder[cur_cylinder_index].start))
return;
- if (MATCH(".cylinder.end", pressure, &dive->cylinder[cylinder_index].end))
+ if (MATCH(".cylinder.end", pressure, &dive->cylinder[cur_cylinder_index].end))
return;
- if (MATCH(".o2", gasmix, &dive->cylinder[cylinder_index].gasmix.o2))
+ if (MATCH(".o2", gasmix, &dive->cylinder[cur_cylinder_index].gasmix.o2))
return;
- if (MATCH(".n2", gasmix_nitrogen, &dive->cylinder[cylinder_index].gasmix))
+ if (MATCH(".n2", gasmix_nitrogen, &dive->cylinder[cur_cylinder_index].gasmix))
return;
- if (MATCH(".he", gasmix, &dive->cylinder[cylinder_index].gasmix.he))
+ if (MATCH(".he", gasmix, &dive->cylinder[cur_cylinder_index].gasmix.he))
return;
nonmatch("dive", name, buf);
*/
static void dive_start(void)
{
- if (dive)
+ if (cur_dive)
return;
- dive = alloc_dive();
- memset(&tm, 0, sizeof(tm));
+ cur_dive = alloc_dive();
+ memset(&cur_tm, 0, sizeof(cur_tm));
}
static void dive_end(void)
{
- if (!dive)
+ if (!cur_dive)
return;
- record_dive(dive);
- dive = NULL;
- cylinder_index = 0;
+ record_dive(cur_dive);
+ cur_dive = NULL;
+ cur_cylinder_index = 0;
}
static void event_start(void)
{
- memset(&event, 0, sizeof(event));
- event.active = 1;
+ memset(&cur_event, 0, sizeof(cur_event));
+ cur_event.active = 1;
}
static void event_end(void)
{
- if (event.name && strcmp(event.name, "surface") != 0)
- add_event(dive, event.time.seconds, event.type, event.flags, event.value, event.name);
- event.active = 0;
+ if (cur_event.name && strcmp(cur_event.name, "surface") != 0)
+ add_event(cur_dive, cur_event.time.seconds,
+ cur_event.type, cur_event.flags,
+ cur_event.value, cur_event.name);
+ cur_event.active = 0;
}
static void cylinder_start(void)
static void cylinder_end(void)
{
- cylinder_index++;
+ cur_cylinder_index++;
}
static void sample_start(void)
{
- sample = prepare_sample(&dive);
+ cur_sample = prepare_sample(&cur_dive);
}
static void sample_end(void)
{
- if (!dive)
+ if (!cur_dive)
return;
- finish_sample(dive);
- sample = NULL;
+ finish_sample(cur_dive);
+ cur_sample = NULL;
}
static void entry(const char *name, int size, const char *raw)
return;
memcpy(buf, raw, size);
buf[size] = 0;
- if (event.active) {
+ if (cur_event.active) {
try_to_fill_event(name, buf);
return;
}
- if (sample) {
- try_to_fill_sample(sample, name, buf);
+ if (cur_sample) {
+ try_to_fill_sample(cur_sample, name, buf);
return;
}
- if (dive) {
- try_to_fill_dive(&dive, name, buf);
+ if (cur_dive) {
+ try_to_fill_dive(&cur_dive, name, buf);
return;
}
}