X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=main.c;h=5a047bb09a58882244235f6838a409c8ce4e5cff;hb=2804dc42d81a728c62b173f55bbfc075cf643a00;hp=96eca191f092e46d0d660af0297bd72d08f19942;hpb=1155ad3f0fb2471163335d1d7c6856a81f495e49;p=ext%2Fsubsurface.git diff --git a/main.c b/main.c index 96eca19..5a047bb 100644 --- a/main.c +++ b/main.c @@ -1,4 +1,5 @@ #include +#include #include #include @@ -25,7 +26,32 @@ static int sortfn(const void *_a, const void *_b) */ static void report_dives(void) { + int i; + qsort(dive_table.dives, dive_table.nr, sizeof(struct dive *), sortfn); + + for (i = 1; i < dive_table.nr; i++) { + struct dive **pp = &dive_table.dives[i-1]; + struct dive *prev = pp[0]; + struct dive *dive = pp[1]; + struct dive *merged; + + if (prev->when + prev->duration.seconds < dive->when) + continue; + + merged = try_to_merge(prev, dive); + if (!merged) + continue; + + free(prev); + free(dive); + *pp = merged; + dive_table.nr--; + memmove(pp+1, pp+2, sizeof(*pp)*(dive_table.nr - i)); + + /* Redo the new 'i'th dive */ + i--; + } } static void parse_argument(const char *arg)