diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2009-03-14 05:56:56 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2009-03-14 05:56:56 +0000 |
commit | f91403e499e276720f8527f6a4bfce011465e36f (patch) | |
tree | 2193e346a94116598ab85a92c75ff0b304df52ca /gpsdecode.c | |
parent | f06949d2012fec77a9d199eee770580bc06fde0e (diff) | |
download | gpsd-f91403e499e276720f8527f6a4bfce011465e36f.tar.gz |
Prevent spurious echo of data on bad packets.
Diffstat (limited to 'gpsdecode.c')
-rw-r--r-- | gpsdecode.c | 8 |
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) |