X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=main.c;h=5a047bb09a58882244235f6838a409c8ce4e5cff;hb=2804dc42d81a728c62b173f55bbfc075cf643a00;hp=186088bd4f95dd3450e33dc84079963da2267f91;hpb=feec55504084baf022517d39e72431b4d361a217;p=ext%2Fsubsurface.git diff --git a/main.c b/main.c index 186088b..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) @@ -96,7 +122,7 @@ static void file_save(GtkWidget *w, gpointer data) if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { char *filename; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - printf("Save: '%s'\n", filename); + save_dives(filename); g_free(filename); } gtk_widget_destroy(dialog);