summaryrefslogtreecommitdiff
path: root/libgps_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgps_core.c')
-rw-r--r--libgps_core.c10
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 */