diff options
Diffstat (limited to 'core/divelist.c')
-rw-r--r-- | core/divelist.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/core/divelist.c b/core/divelist.c index 84694da60..f691cd7f1 100644 --- a/core/divelist.c +++ b/core/divelist.c @@ -1655,11 +1655,16 @@ static bool add_trip_to_table(struct dive_trip *trip, struct dive_table *dives_f * If downloaded is true, only the divecomputer of the first dive * will be considered, as it is assumed that all dives come from * the same computer. + * If merge_all_trips is true, all trips are merged. This is used + * when merging log files. If it is false, only autogenerated trips + * are merged. This is used for download-from-dc. There, if the user + * explicitly asked for a new trip, we don't want to merge into old + * trips. * Note: the dives in import_table and the trips in import_trip_table * are consumed. On return both tables have size 0. */ void process_imported_dives(struct dive_table *import_table, struct trip_table *import_trip_table, - bool prefer_imported, bool downloaded) + bool prefer_imported, bool downloaded, bool merge_all_trips) { int i, j; struct dive_trip *trip_import, *trip_old; @@ -1695,6 +1700,8 @@ void process_imported_dives(struct dive_table *import_table, struct trip_table * */ for (i = 0; i < import_trip_table->nr; i++) { trip_import = import_trip_table->trips[i]; + if (!merge_all_trips && !trip_import->autogen) + continue; for (j = 0; j < trip_table.nr; j++) { trip_old = trip_table.trips[j]; if (trips_overlap(trip_import, trip_old)) { |