summaryrefslogtreecommitdiff
path: root/gpsdecode.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2009-03-14 05:56:56 +0000
committerEric S. Raymond <esr@thyrsus.com>2009-03-14 05:56:56 +0000
commitf91403e499e276720f8527f6a4bfce011465e36f (patch)
tree2193e346a94116598ab85a92c75ff0b304df52ca /gpsdecode.c
parentf06949d2012fec77a9d199eee770580bc06fde0e (diff)
downloadgpsd-f91403e499e276720f8527f6a4bfce011465e36f.tar.gz
Prevent spurious echo of data on bad packets.
Diffstat (limited to 'gpsdecode.c')
-rw-r--r--gpsdecode.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gpsdecode.c b/gpsdecode.c
index 4db0895a..6986855a 100644
--- a/gpsdecode.c
+++ b/gpsdecode.c
@@ -263,7 +263,9 @@ static void decode(FILE *fpin, FILE *fpout)
char buf[BUFSIZ];
for (;;) {
- if (gpsd_poll(&session) & ERROR_SET) {
+ gps_mask_t state = gpsd_poll(&session);
+
+ if (state & ERROR_SET) {
gpsd_report(LOG_ERROR,"Error during packet fetch.\n");
break;
}
@@ -279,8 +281,8 @@ static void decode(FILE *fpin, FILE *fpout)
rtcm3_dump(&rtcm3, stdout);
}
else if (session.packet.type == AIVDM_PACKET) {
- aivdm_decode(&session, &session.driver.aivdm.decoded);
- aivdm_dump(&session.driver.aivdm.decoded, stdout);
+ if (state & PACKET_SET)
+ aivdm_dump(&session.driver.aivdm.decoded, stdout);
} else
gpsd_report(LOG_ERROR, "unknown packet type %d\n", session.packet.type);
if (packet_buffered_input(&session.packet) <= 0)