summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Gehad <gehadelrobey@gmail.com>2014-04-05 13:01:34 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-04-05 16:10:11 -0700
commitcb3436b42eecdb0a058ed565709804292b80469b (patch)
tree8cf631a40536e4f3026c8ed9a03e34766d328a00
parent62e4c4069b517e97660452edd70f65d3cdb15e35 (diff)
downloadsubsurface-cb3436b42eecdb0a058ed565709804292b80469b.tar.gz
Use helper function to write decimal numbers
Never ever use '%f' to write floating point data to a file. The stupid locale handling creates useless comma-infested output in some locales. Instead use one of our clever helper functions to do the right thing. Original patch by Gehad, modified by Linus to be a little more generic. Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--membuffer.c12
-rw-r--r--membuffer.h1
-rw-r--r--save-git.c17
-rw-r--r--worldmap-save.c4
4 files changed, 17 insertions, 17 deletions
diff --git a/membuffer.c b/membuffer.c
index 9d3167293..82816ece6 100644
--- a/membuffer.c
+++ b/membuffer.c
@@ -164,3 +164,15 @@ void put_salinity(struct membuffer *b, int salinity, const char *pre, const char
if (salinity)
put_format(b, "%s%d%s", pre, salinity / 10, post);
}
+
+void put_degrees(struct membuffer *b, degrees_t value, const char *pre, const char *post)
+{
+ int udeg = value.udeg;
+ const char *sign = "";
+
+ if (udeg < 0) {
+ udeg = -udeg;
+ sign = "-";
+ }
+ put_format(b,"%s%s%u.%06u%s", pre, sign, FRACTION(udeg, 1000000), post);
+}
diff --git a/membuffer.h b/membuffer.h
index 4386b1e11..ee0305eee 100644
--- a/membuffer.h
+++ b/membuffer.h
@@ -56,6 +56,7 @@ extern void put_depth(struct membuffer *, depth_t, const char *, const char *);
extern void put_duration(struct membuffer *, duration_t, const char *, const char *);
extern void put_pressure(struct membuffer *, pressure_t, const char *, const char *);
extern void put_salinity(struct membuffer *, int, const char *, const char *);
+extern void put_degrees(struct membuffer *b, degrees_t value, const char *, const char *);
#ifdef __cplusplus
}
diff --git a/save-git.c b/save-git.c
index 9b0d2dbba..634db6606 100644
--- a/save-git.c
+++ b/save-git.c
@@ -38,24 +38,11 @@ static void cond_put_format(int cond, struct membuffer *b, const char *fmt, ...)
#define SAVE(str, x) cond_put_format(dive->x, b, str " %d\n", dive->x)
-static void put_degrees(struct membuffer *b, degrees_t value, const char sep)
-{
- int udeg = value.udeg;
- const char *sign = "";
-
- if (udeg < 0) {
- udeg = -udeg;
- sign = "-";
- }
- put_format(b,"%s%u.%06u%c", sign, FRACTION(udeg, 1000000), sep);
-}
-
static void show_gps(struct membuffer *b, degrees_t latitude, degrees_t longitude)
{
if (latitude.udeg || longitude.udeg) {
- put_string(b, "gps ");
- put_degrees(b, latitude, ' ');
- put_degrees(b, longitude, '\n');
+ put_degrees(b, latitude, "gps ", " ");
+ put_degrees(b, longitude, "", "\n");
}
}
diff --git a/worldmap-save.c b/worldmap-save.c
index 0c40bc30f..36ee94311 100644
--- a/worldmap-save.c
+++ b/worldmap-save.c
@@ -94,8 +94,8 @@ void writeMarkers(struct membuffer *b)
if (dive->latitude.udeg == 0 && dive->longitude.udeg == 0)
continue;
- put_format(b, "temp = new google.maps.Marker({position: new google.maps.LatLng(%f,%f)});\n",
- dive->latitude.udeg / 1000000.0, dive->longitude.udeg / 1000000.0);
+ put_degrees(b, dive->latitude, "temp = new google.maps.Marker({position: new google.maps.LatLng(", "");
+ put_degrees(b, dive->longitude, ",", ")});\n");
put_string(b, "markers.push(temp);\ntempinfowindow = new google.maps.InfoWindow({content: '<div id=\"content\">'+'<div id=\"siteNotice\">'+'</div>'+'<div id=\"bodyContent\">");
put_HTML_date(b, dive);
put_duration(b, dive->duration, "<p>duration=", " min</p>");