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>
This commit is contained in:
Gehad 2014-04-05 13:01:34 -07:00 committed by Dirk Hohndel
parent 62e4c4069b
commit cb3436b42e
4 changed files with 17 additions and 17 deletions

View file

@ -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);
}

View file

@ -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
}

View file

@ -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");
}
}

View file

@ -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>");