diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/divelist.c | 9 | ||||
-rw-r--r-- | core/divelist.h | 3 |
2 files changed, 10 insertions, 2 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)) { diff --git a/core/divelist.h b/core/divelist.h index 5676b33b6..26bd1b3db 100644 --- a/core/divelist.h +++ b/core/divelist.h @@ -18,7 +18,8 @@ extern int init_decompression(struct deco_state *ds, struct dive *dive); /* divelist core logic functions */ extern void process_loaded_dives(); -extern void process_imported_dives(struct dive_table *import_table, struct trip_table *import_trip_table, bool prefer_imported, bool downloaded); +extern void process_imported_dives(struct dive_table *import_table, struct trip_table *import_trip_table, + bool prefer_imported, bool downloaded, bool merge_all_trips); extern char *get_dive_gas_string(const struct dive *dive); extern struct dive **grow_dive_table(struct dive_table *table); |