summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/dive.h1
-rw-r--r--core/divelist.c13
2 files changed, 14 insertions, 0 deletions
diff --git a/core/dive.h b/core/dive.h
index 1b58eef4c..569232a38 100644
--- a/core/dive.h
+++ b/core/dive.h
@@ -507,6 +507,7 @@ extern void delete_single_dive(int idx);
extern void add_single_dive(int idx, struct dive *dive);
extern void insert_trip(dive_trip_t **trip);
+extern struct dive_trip *clone_empty_trip(struct dive_trip *trip);
extern const struct units SI_units, IMPERIAL_units;
diff --git a/core/divelist.c b/core/divelist.c
index 7291de23e..a9b793517 100644
--- a/core/divelist.c
+++ b/core/divelist.c
@@ -727,6 +727,19 @@ void insert_trip(dive_trip_t **dive_trip_p)
#endif
}
+/* create a copy of a dive trip, but don't add any dives. */
+dive_trip_t *clone_empty_trip(dive_trip_t *trip)
+{
+ dive_trip_t *copy = malloc(sizeof(struct dive_trip));
+ *copy = *trip;
+ copy->location = copy_string(trip->location);
+ copy->notes = copy_string(trip->notes);
+ copy->nrdives = 0;
+ copy->next = NULL;
+ copy->dives = NULL;
+ return copy;
+}
+
static void delete_trip(dive_trip_t *trip)
{
dive_trip_t **p, *tmp;