Fix:maptool:Another name for faroe islands
[navit-package] / navit / vehicle.c
index fe8c282..dd0c749 100644 (file)
@@ -193,12 +193,11 @@ vehicle_get_attr(struct vehicle *this_, enum attr_type type, struct attr *attr,
  * @param attrs
  */
 int
-vehicle_set_attr(struct vehicle *this_, struct attr *attr,
-                struct attr **attrs)
+vehicle_set_attr(struct vehicle *this_, struct attr *attr)
 {
        int ret=1;
        if (this_->meth.set_attr)
-               ret=this_->meth.set_attr(this_->priv, attr, attrs);
+               ret=this_->meth.set_attr(this_->priv, attr);
        if (ret == 1 && attr->type != attr_navit)
                this_->attrs=attr_generic_set_attr(this_->attrs, attr);
        return ret != 0;
@@ -311,6 +310,8 @@ vehicle_draw(struct vehicle *this_, struct graphics *gra, struct point *pnt, int
                angle+=360;
        dbg(1,"enter this=%p gra=%p pnt=%p lazy=%d dir=%d speed=%d\n", this_, gra, pnt, lazy, angle, speed);
        dbg(1,"point %d,%d\n", pnt->x, pnt->y);
+       if (!this_->cursor)
+               return;
        this_->cursor_pnt=*pnt;
        this_->cursor_pnt.x-=this_->cursor->w/2;
        this_->cursor_pnt.y-=this_->cursor->h/2;
@@ -386,6 +387,39 @@ vehicle_log_nmea(struct vehicle *this_, struct log *log)
        log_write(log, pos_attr.u.str, strlen(pos_attr.u.str), 0);
 }
 
+void
+vehicle_log_gpx_add_tag(char *tag, char **logstr)
+{
+       char *ext_start="\t<extensions>\n";
+       char *ext_end="\t</extensions>\n";
+       char *trkpt_end="</trkpt>";
+       char *start=NULL,*end=NULL;
+       if (!*logstr) {
+               start=g_strdup(ext_start);
+               end=g_strdup(ext_end);
+       } else {
+               char *str=strstr(*logstr, ext_start);
+               int len;
+               if (str) {
+                       len=str-*logstr+strlen(ext_start);
+                       start=g_strdup(*logstr);
+                       start[len]='\0';
+                       end=g_strdup(str+strlen(ext_start));
+               } else {
+                       str=strstr(*logstr, trkpt_end);
+                       len=str-*logstr;
+                       end=g_strdup_printf("%s%s",ext_end,str);
+                       str=g_strdup(*logstr);
+                       str[len]='\0';
+                       start=g_strdup_printf("%s%s",str,ext_start);
+                       g_free(str);
+               }
+       }
+       *logstr=g_strdup_printf("%s%s%s",start,tag,end);
+       g_free(start);
+       g_free(end);
+}
+
 static void
 vehicle_log_gpx(struct vehicle *this_, struct log *log)
 {