/* value = NULL for none */ static void gpspoint_process_key_and_value ( const gchar *key, gint key_len, const gchar *value, gint value_len ) { if (key_len == 4 && strncasecmp( key, "type", key_len ) == 0 ) { if (value == NULL) line_type = GPSPOINT_TYPE_NONE; else if (value_len == 5 && strncasecmp( value, "track", value_len ) == 0 ) line_type = GPSPOINT_TYPE_TRACK; else if (value_len == 10 && strncasecmp( value, "trackpoint", value_len ) == 0 ) line_type = GPSPOINT_TYPE_TRACKPOINT; else if (value_len == 8 && strncasecmp( value, "waypoint", value_len ) == 0 ) line_type = GPSPOINT_TYPE_WAYPOINT; else /* all others are ignored */ line_type = GPSPOINT_TYPE_NONE; } else if (key_len == 4 && strncasecmp( key, "name", key_len ) == 0 && value != NULL) { if (line_name == NULL) { line_name = g_strndup ( value, value_len ); } } else if (key_len == 7 && strncasecmp( key, "comment", key_len ) == 0 && value != NULL) { if (line_comment == NULL) line_comment = deslashndup ( value, value_len ); } else if (key_len == 5 && strncasecmp( key, "image", key_len ) == 0 && value != NULL) { if (line_image == NULL) line_image = deslashndup ( value, value_len ); } else if (key_len == 8 && strncasecmp( key, "latitude", key_len ) == 0 && 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_ascii_strtod(value, NULL); } else if (key_len == 8 && strncasecmp( key, "altitude", key_len ) == 0 && 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') { line_visible = FALSE; } else if (key_len == 6 && strncasecmp( key, "symbol", key_len ) == 0 && value != NULL) { line_symbol = g_strndup ( value, value_len ); } else if (key_len == 8 && strncasecmp( key, "unixtime", key_len ) == 0 && value != NULL) { line_timestamp = g_ascii_strtod(value, NULL); if ( line_timestamp != 0x80000000 ) line_has_timestamp = TRUE; } else if (key_len == 10 && strncasecmp( key, "newsegment", key_len ) == 0 && value != NULL) { line_newsegment = TRUE; } else if (key_len == 8 && strncasecmp( key, "extended", key_len ) == 0 && value != NULL) { line_extended = TRUE; } else if (key_len == 5 && strncasecmp( key, "speed", key_len ) == 0 && 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_ascii_strtod(value, NULL); } else if (key_len == 3 && strncasecmp( key, "sat", key_len ) == 0 && value != NULL) { line_sat = atoi(value); } else if (key_len == 3 && strncasecmp( key, "fix", key_len ) == 0 && value != NULL) { line_fix = atoi(value); } }
/* value = NULL for none */ static void gpspoint_process_key_and_value ( const gchar *key, guint key_len, const gchar *value, guint value_len ) { if (key_len == 4 && strncasecmp( key, "type", key_len ) == 0 ) { if (value == NULL) line_type = GPSPOINT_TYPE_NONE; else if (value_len == 5 && strncasecmp( value, "track", value_len ) == 0 ) line_type = GPSPOINT_TYPE_TRACK; else if (value_len == 10 && strncasecmp( value, "trackpoint", value_len ) == 0 ) line_type = GPSPOINT_TYPE_TRACKPOINT; else if (value_len == 8 && strncasecmp( value, "waypoint", value_len ) == 0 ) line_type = GPSPOINT_TYPE_WAYPOINT; else if (value_len == 5 && strncasecmp( value, "route", value_len ) == 0 ) line_type = GPSPOINT_TYPE_ROUTE; else if (value_len == 10 && strncasecmp( value, "routepoint", value_len ) == 0 ) line_type = GPSPOINT_TYPE_ROUTEPOINT; else /* all others are ignored */ line_type = GPSPOINT_TYPE_NONE; } else if (key_len == 4 && strncasecmp( key, "name", key_len ) == 0 && value != NULL) { if (line_name == NULL) { line_name = deslashndup ( value, value_len ); } } else if (key_len == 7 && strncasecmp( key, "comment", key_len ) == 0 && value != NULL) { if (line_comment == NULL) line_comment = deslashndup ( value, value_len ); } else if (key_len == 11 && strncasecmp( key, "description", key_len ) == 0 && value != NULL) { if (line_description == NULL) line_description = deslashndup ( value, value_len ); } else if (key_len == 6 && strncasecmp( key, "source", key_len ) == 0 && value != NULL) { if (line_source == NULL) line_source = deslashndup ( value, value_len ); } // NB using 'xtype' to differentiate from our own 'type' key else if (key_len == 5 && strncasecmp( key, "xtype", key_len ) == 0 && value != NULL) { if (line_xtype == NULL) line_xtype = deslashndup ( value, value_len ); } else if (key_len == 5 && strncasecmp( key, "color", key_len ) == 0 && value != NULL) { if (line_color == NULL) line_color = deslashndup ( value, value_len ); } else if (key_len == 14 && strncasecmp( key, "draw_name_mode", key_len ) == 0 && value != NULL) { line_name_label = atoi(value); } else if (key_len == 18 && strncasecmp( key, "number_dist_labels", key_len ) == 0 && value != NULL) { line_dist_label = atoi(value); } else if (key_len == 5 && strncasecmp( key, "image", key_len ) == 0 && value != NULL) { if (line_image == NULL) line_image = deslashndup ( value, value_len ); } else if (key_len == 8 && strncasecmp( key, "latitude", key_len ) == 0 && 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_ascii_strtod(value, NULL); } else if (key_len == 8 && strncasecmp( key, "altitude", key_len ) == 0 && value != NULL) { line_altitude = g_ascii_strtod(value, NULL); } else if (key_len == 7 && strncasecmp( key, "visible", key_len ) == 0 && value != NULL && value[0] != 'y' && value[0] != 'Y' && value[0] != 't' && value[0] != 'T') { line_visible = FALSE; } else if (key_len == 6 && strncasecmp( key, "symbol", key_len ) == 0 && value != NULL) { line_symbol = g_strndup ( value, value_len ); } else if (key_len == 8 && strncasecmp( key, "unixtime", key_len ) == 0 && value != NULL) { line_timestamp = g_ascii_strtod(value, NULL); if ( line_timestamp != 0x80000000 ) line_has_timestamp = TRUE; } else if (key_len == 10 && strncasecmp( key, "newsegment", key_len ) == 0 && value != NULL) { line_newsegment = TRUE; } else if (key_len == 8 && strncasecmp( key, "extended", key_len ) == 0 && value != NULL) { line_extended = TRUE; } else if (key_len == 5 && strncasecmp( key, "speed", key_len ) == 0 && 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_ascii_strtod(value, NULL); } else if (key_len == 3 && strncasecmp( key, "sat", key_len ) == 0 && value != NULL) { line_sat = atoi(value); } else if (key_len == 3 && strncasecmp( key, "fix", key_len ) == 0 && value != NULL) { line_fix = atoi(value); } else if (key_len == 4 && strncasecmp( key, "hdop", key_len ) == 0 && value != NULL) { line_hdop = g_ascii_strtod(value, NULL); } else if (key_len == 4 && strncasecmp( key, "vdop", key_len ) == 0 && value != NULL) { line_vdop = g_ascii_strtod(value, NULL); } else if (key_len == 4 && strncasecmp( key, "pdop", key_len ) == 0 && value != NULL) { line_pdop = g_ascii_strtod(value, NULL); } }