Exemple #1
0
/*
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);
    }
}
Exemple #2
0
/*
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);
  }
}