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);
}
}
int status;
int sats_used;
int time;
+ int on_eof;
#ifdef _WIN32
int no_data_count;
#endif
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;
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);
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