From: martin-s Date: Fri, 25 Apr 2008 09:20:54 +0000 (+0000) Subject: Add:vehicle_file:Added attribute on_eof for controlling behaviour when replay is... X-Git-Tag: navit-0.5.0.5194svn~4121 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4aa81e97555263d6a1d88889216e95ec13e58486;p=profile%2Fivi%2Fnavit.git Add:vehicle_file:Added attribute on_eof for controlling behaviour when replay is finished git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@1031 ffa7fe5e-494d-0410-b361-a75ebd5db220 --- diff --git a/navit/src/attr_def.h b/navit/src/attr_def.h index 9ea3f51..f9c0255 100644 --- a/navit/src/attr_def.h +++ b/navit/src/attr_def.h @@ -99,6 +99,7 @@ ATTR(gc_type) ATTR(layout) ATTR(position_nmea) ATTR(gpsd_query) +ATTR(on_eof) ATTR2(0x0003ffff,type_string_end) ATTR(order_limit) ATTR2(0x00050000,type_double_start) diff --git a/navit/src/debug.c b/navit/src/debug.c index 472695c..401c4a5 100644 --- a/navit/src/debug.c +++ b/navit/src/debug.c @@ -70,8 +70,8 @@ debug_vprintf(int level, const char *module, const int mlen, const char *functio sprintf(buffer, "%s:%s", module, function); if (debug_level_get(module) >= level || debug_level_get(buffer) >= level) { if (prefix) - printf("%s:",buffer); - vprintf(fmt, ap); + fprintf(stderr,"%s:",buffer); + vfprintf(stderr,fmt, ap); } } diff --git a/navit/src/vehicle/file/vehicle_file.c b/navit/src/vehicle/file/vehicle_file.c index c637313..6b20cf6 100644 --- a/navit/src/vehicle/file/vehicle_file.c +++ b/navit/src/vehicle/file/vehicle_file.c @@ -51,6 +51,7 @@ struct vehicle_priv { int status; int sats_used; int time; + int on_eof; #ifdef _WIN32 int no_data_count; #endif @@ -337,8 +338,17 @@ vehicle_file_io(GIOChannel * iochan, GIOCondition condition, gpointer t) priv->buffer + priv->buffer_pos, buffer_size - priv->buffer_pos - 1); if (size <= 0) { - vehicle_file_close(priv); - vehicle_file_open(priv); + switch (priv->on_eof) { + case 0: + vehicle_file_close(priv); + vehicle_file_open(priv); + break; + case 1: + break; + case 2: + exit(0); + break; + } return TRUE; } priv->buffer_pos += size; @@ -448,6 +458,7 @@ vehicle_file_new_file(struct vehicle_methods struct vehicle_priv *ret; struct attr *source; struct attr *time; + struct attr *on_eof; dbg(1, "enter\n"); source = attr_search(attrs, NULL, attr_source); @@ -456,16 +467,22 @@ vehicle_file_new_file(struct vehicle_methods ret->cbl = cbl; ret->source = g_strdup(source->u.str); ret->buffer = g_malloc(buffer_size); + ret->time=1000; + time = attr_search(attrs, NULL, attr_time); + if (time) + ret->time=time->u.num; + on_eof = attr_search(attrs, NULL, attr_on_eof); + if (on_eof && !strcasecmp(on_eof->u.str, "stop")) + ret->on_eof=1; + if (on_eof && !strcasecmp(on_eof->u.str, "exit")) + ret->on_eof=2; + dbg(0,"on_eof=%d\n", ret->on_eof); *meth = vehicle_file_methods; if (vehicle_file_open(ret)) { vehicle_file_enable_watch(ret); return ret; } - ret->time=1000; - time = attr_search(attrs, NULL, attr_time); - if (time) - ret->time=time->u.num; #ifdef _WIN32 ret->no_data_count = 0; #endif