diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/divesite.c | 18 | ||||
-rw-r--r-- | core/divesite.h | 1 |
2 files changed, 16 insertions, 3 deletions
diff --git a/core/divesite.c b/core/divesite.c index d77e6ef72..f944d760a 100644 --- a/core/divesite.c +++ b/core/divesite.c @@ -140,6 +140,19 @@ void add_dive_site_to_table(struct dive_site *ds, struct dive_site_table *ds_tab ds_table->nr = nr + 1; } +struct dive_site *alloc_dive_site() +{ + struct dive_site *ds; + ds = calloc(1, sizeof(*ds)); + if (!ds) + exit(1); + ds->uuid = rand() & 0xff; + ds->uuid |= (rand() & 0xff) << 8; + ds->uuid |= (rand() & 0xff) << 16; + ds->uuid |= (rand() & 0xff) << 24; + return ds; +} + /* we never allow a second dive site with the same uuid */ struct dive_site *alloc_or_get_dive_site(uint32_t uuid, struct dive_site_table *ds_table) { @@ -148,9 +161,8 @@ struct dive_site *alloc_or_get_dive_site(uint32_t uuid, struct dive_site_table * if (uuid && (ds = get_dive_site_by_uuid(uuid, ds_table)) != NULL) return ds; - ds = calloc(1, sizeof(*ds)); - if (!ds) - exit(1); + ds = alloc_dive_site(); + add_dive_site_to_table(ds, ds_table); // we should always be called with a valid uuid except in the special diff --git a/core/divesite.h b/core/divesite.h index 1f841a7d2..b31bf3940 100644 --- a/core/divesite.h +++ b/core/divesite.h @@ -50,6 +50,7 @@ void remove_dive_site_from_table(struct dive_site *ds, struct dive_site_table *d void register_dive_site(struct dive_site *ds); void unregister_dive_site(struct dive_site *ds); struct dive_site *alloc_or_get_dive_site(uint32_t uuid, struct dive_site_table *ds_table); +struct dive_site *alloc_dive_site(); int nr_of_dives_at_dive_site(struct dive_site *ds, bool select_only); bool is_dive_site_used(struct dive_site *ds, bool select_only); void free_dive_site(struct dive_site *ds); |