dive_table.nr = nr+1;
}
+static void delete_dive_renumber(struct dive **dives, int i, int nr)
+{
+ struct dive *dive = dives[i];
+ int number = dive->number, j;
+
+ if (!number)
+ return;
+
+ /*
+ * Check that all numbered dives after the deleted
+ * ones are consecutive, return without renumbering
+ * if that is not the case.
+ */
+ for (j = i+1; j < nr; j++) {
+ struct dive *next = dives[j];
+ if (!next->number)
+ break;
+ number++;
+ if (next->number != number)
+ return;
+ }
+
+ /*
+ * Ok, we hit the end of the dives or a unnumbered
+ * dive - renumber.
+ */
+ for (j = i+1 ; j < nr; j++) {
+ struct dive *next = dives[j];
+ if (!next->number)
+ break;
+ next->number--;
+ }
+}
+
/*
* Remove a dive from the dive_table array
*/
struct dive *d = dives[i];
if (d != dive)
continue;
+ /* should we re-number? */
+ delete_dive_renumber(dives, i, nr);
memmove(dives+i, dives+i+1, sizeof(struct dive *)*(nr-i-1));
dives[nr] = NULL;
dive_table.nr = nr-1;
return MATCH(".divetime", sampletime, &sample->time) ||
MATCH(".depth", depth, &sample->depth) ||
MATCH(".temperature", temperature, &sample->temperature) ||
+ MATCH(".tankpressure", pressure, &sample->cylinderpressure) ||
0;
}
static xsltStylesheetPtr get_stylesheet(const char *name)
{
- const char *path = xslt_path, *next;
+ const char *path, *next;
+
+ path = getenv("SUBSURFACE_XSLT_PATH");
+ if (!path)
+ path = xslt_path;
do {
int len;