summaryrefslogtreecommitdiff
path: root/navit/vehicle.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-11-12 14:54:10 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-11-12 14:54:10 +0000
commitef90d5cd08b8295591f8b38de10e31d0de2e2fb6 (patch)
treef62a6f596bd2d7b3f0adaefb6a748a4bd08dddc9 /navit/vehicle.c
parent1dce0abe3cde9bcb224f04edbe802466b6cfd58d (diff)
downloadnavit-ef90d5cd08b8295591f8b38de10e31d0de2e2fb6.tar.gz
Add:Core:Support for custom tags for gpx log
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@2741 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/vehicle.c')
-rw-r--r--navit/vehicle.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/navit/vehicle.c b/navit/vehicle.c
index fe8c282db..6fe75ee1e 100644
--- a/navit/vehicle.c
+++ b/navit/vehicle.c
@@ -386,6 +386,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)
{