diff options
Diffstat (limited to 'libgps_core.c')
-rw-r--r-- | libgps_core.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libgps_core.c b/libgps_core.c index 29ac6da1..e02ff1b9 100644 --- a/libgps_core.c +++ b/libgps_core.c @@ -146,12 +146,18 @@ int gps_close(struct gps_data_t *gpsdata CONDITIONALLY_UNUSED) return status; } -int gps_read(struct gps_data_t *gpsdata CONDITIONALLY_UNUSED) +int gps_read(struct gps_data_t *gpsdata CONDITIONALLY_UNUSED, + char *message, int message_len) /* read from a gpsd connection */ { int status = -1; libgps_debug_trace((DEBUG_CALLS, "gps_read() begins\n")); + if ((NULL != message) && (0 < message_len)) { + /* be sure message is zero length */ + /* we do not memset() as this is time critical input path */ + *message = '\0'; + } #ifdef SHM_EXPORT_ENABLE if (BAD_SOCKET((intptr_t)(gpsdata->gps_fd))) { @@ -161,7 +167,7 @@ int gps_read(struct gps_data_t *gpsdata CONDITIONALLY_UNUSED) #ifdef SOCKET_EXPORT_ENABLE if (status == -1 && !BAD_SOCKET((intptr_t)(gpsdata->gps_fd))) { - status = gps_sock_read(gpsdata); + status = gps_sock_read(gpsdata, message, message_len); } #endif /* SOCKET_EXPORT_ENABLE */ |