diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-04-16 21:40:03 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-05-11 12:35:11 -0700 |
commit | 6586ba5579dbe4eb360bc646572e58350d12bffb (patch) | |
tree | 996d1a6fb867f17d52d284b404522cf5d7f2fe40 | |
parent | ae6f17af0c15ec3d9907a4ba9ca8846dbb0e2721 (diff) | |
download | subsurface-6586ba5579dbe4eb360bc646572e58350d12bffb.tar.gz |
Cleanup: move parse_location() declaration into header file
The parse_location() function was used in three places. In two
of them, the declaration was in the translation unit. Instead,
move the declaration into a header file, to avoid duplication
and the possibility of inconsistencies.
The "units.h" header was chosen as this is where location_t
is defined.
Moreover, make the string argument to parse_location() "const
char *", so that it can be used on non-owned buffers.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | core/libdivecomputer.c | 2 | ||||
-rw-r--r-- | core/load-git.c | 1 | ||||
-rw-r--r-- | core/parse-xml.c | 10 | ||||
-rw-r--r-- | core/units.h | 2 |
4 files changed, 7 insertions, 8 deletions
diff --git a/core/libdivecomputer.c b/core/libdivecomputer.c index bb70f50a2..a870317b1 100644 --- a/core/libdivecomputer.c +++ b/core/libdivecomputer.c @@ -570,8 +570,6 @@ static void set_dc_serial(struct divecomputer *dc, const char *serial) dc->deviceid = calculate_string_hash(serial); } -extern void parse_location(char *, location_t *); - static void parse_string_field(device_data_t *devdata, struct dive *dive, dc_field_string_t *str) { // Our dive ID is the string hash of the "Dive ID" string diff --git a/core/load-git.c b/core/load-git.c index f74950248..c6b3400a8 100644 --- a/core/load-git.c +++ b/core/load-git.c @@ -31,7 +31,6 @@ struct keyword_action { }; #define ARRAY_SIZE(array) (sizeof(array)/sizeof(array[0])) -extern void parse_location(char *buf, location_t *); git_blob *git_tree_entry_blob(git_repository *repo, const git_tree_entry *entry); static char *get_utf8(struct membuffer *b) diff --git a/core/parse-xml.c b/core/parse-xml.c index d3ee13b57..483614c6e 100644 --- a/core/parse-xml.c +++ b/core/parse-xml.c @@ -1088,7 +1088,7 @@ static int uddf_dive_match(struct dive *dive, const char *name, char *buf, struc * We don't do exponentials etc, if somebody does * GPS locations in that format, they are insane. */ -static degrees_t parse_degrees(char *buf, char **end) +static degrees_t parse_degrees(const char *buf, const char **end) { int sign = 1, decimals = 6, value = 0; degrees_t ret; @@ -1133,7 +1133,7 @@ static degrees_t parse_degrees(char *buf, char **end) static void gps_lat(char *buffer, struct dive *dive, struct parser_state *state) { - char *end; + const char *end; location_t location = { }; struct dive_site *ds = get_dive_site_for_dive(dive); @@ -1149,7 +1149,7 @@ static void gps_lat(char *buffer, struct dive *dive, struct parser_state *state) static void gps_long(char *buffer, struct dive *dive, struct parser_state *state) { - char *end; + const char *end; location_t location = { }; struct dive_site *ds = get_dive_site_for_dive(dive); @@ -1164,9 +1164,9 @@ static void gps_long(char *buffer, struct dive *dive, struct parser_state *state } /* We allow either spaces or a comma between the decimal degrees */ -void parse_location(char *buffer, location_t *loc) +void parse_location(const char *buffer, location_t *loc) { - char *end; + const char *end; loc->lat = parse_degrees(buffer, &end); if (*end == ',') end++; loc->lon = parse_degrees(end, &end); diff --git a/core/units.h b/core/units.h index cea19f785..c9920ac14 100644 --- a/core/units.h +++ b/core/units.h @@ -137,6 +137,8 @@ typedef struct pos { degrees_t lat, lon; } location_t; +extern void parse_location(const char *, location_t *); + static inline bool has_location(const location_t *loc) { return loc->lat.udeg || loc->lon.udeg; |