X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/8499a412948056d494f375f55a0a330b9e826c0a..e13ab673e45ea48de49661f7838e75925f405514:/src/gpspoint.c diff --git a/src/gpspoint.c b/src/gpspoint.c index 933ff5b9..96d279d1 100644 --- a/src/gpspoint.c +++ b/src/gpspoint.c @@ -18,12 +18,20 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#ifdef HAVE_MATH_H #include +#endif + #include "viking.h" #include +#ifdef HAVE_STRING_H #include +#endif #include /* strtod */ @@ -252,15 +260,11 @@ void a_gpspoint_read_file(VikTrwLayer *trw, FILE *f ) { tp->timestamp = line_timestamp; tp->altitude = line_altitude; if (line_extended) { - tp->extended = TRUE; tp->speed = line_speed; tp->course = line_course; tp->nsats = line_sat; tp->fix_mode = line_fix; } - else { - tp->extended = FALSE; - } current_track->trackpoints = g_list_append ( current_track->trackpoints, tp ); } @@ -378,15 +382,15 @@ static void gpspoint_process_key_and_value ( const gchar *key, gint key_len, con } else if (key_len == 8 && strncasecmp( key, "latitude", key_len ) == 0 && value != NULL) { - line_latlon.lat = g_strtod(value, NULL); + line_latlon.lat = g_ascii_strtod(value, NULL); } else if (key_len == 9 && strncasecmp( key, "longitude", key_len ) == 0 && value != NULL) { - line_latlon.lon = g_strtod(value, NULL); + line_latlon.lon = g_ascii_strtod(value, NULL); } else if (key_len == 8 && strncasecmp( key, "altitude", key_len ) == 0 && value != NULL) { - line_altitude = g_strtod(value, NULL); + line_altitude = g_ascii_strtod(value, NULL); } else if (key_len == 7 && strncasecmp( key, "visible", key_len ) == 0 && value[0] != 'y' && value[0] != 'Y' && value[0] != 't' && value[0] != 'T') { @@ -398,7 +402,7 @@ static void gpspoint_process_key_and_value ( const gchar *key, gint key_len, con } else if (key_len == 8 && strncasecmp( key, "unixtime", key_len ) == 0 && value != NULL) { - line_timestamp = g_strtod(value, NULL); + line_timestamp = g_ascii_strtod(value, NULL); if ( line_timestamp != 0x80000000 ) line_has_timestamp = TRUE; } @@ -412,11 +416,11 @@ static void gpspoint_process_key_and_value ( const gchar *key, gint key_len, con } else if (key_len == 5 && strncasecmp( key, "speed", key_len ) == 0 && value != NULL) { - line_speed = g_strtod(value, NULL); + line_speed = g_ascii_strtod(value, NULL); } else if (key_len == 6 && strncasecmp( key, "course", key_len ) == 0 && value != NULL) { - line_course = g_strtod(value, NULL); + line_course = g_ascii_strtod(value, NULL); } else if (key_len == 3 && strncasecmp( key, "sat", key_len ) == 0 && value != NULL) { @@ -489,7 +493,7 @@ static void a_gpspoint_write_trackpoint ( VikTrackpoint *tp, FILE *f ) if ( tp->newsegment ) fprintf ( f, " newsegment=\"yes\"" ); - if (tp->extended) { + if (!isnan(tp->speed) || !isnan(tp->course) || tp->nsats > 0) { fprintf ( f, " extended=\"yes\"" ); if (!isnan(tp->speed)) { gchar *s_speed = a_coords_dtostr(tp->speed);