diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2011-09-27 15:49:40 -0400 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2011-09-27 15:49:40 -0400 |
commit | e7ad4f5d8ccb1203b6590c763444755c58a1d759 (patch) | |
tree | abe00dad0624148a28228fba247a54b9567384a4 /libgps_sock.c | |
parent | c7d7030b8881be73bbbe1492ef4ddd6892d81a2f (diff) | |
download | gpsd-e7ad4f5d8ccb1203b6590c763444755c58a1d759.tar.gz |
Converge the library APIs for different transports more closely.
Diffstat (limited to 'libgps_sock.c')
-rw-r--r-- | libgps_sock.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libgps_sock.c b/libgps_sock.c index ae4d45c3..cc4c8234 100644 --- a/libgps_sock.c +++ b/libgps_sock.c @@ -566,15 +566,17 @@ int gps_sock_stream(struct gps_data_t *gpsdata, unsigned int flags, } int gps_sock_mainloop(struct gps_data_t *gpsdata, int timeout, - void (*hook)(struct gps_data_t *gpsdata)) + int (*hook)(struct gps_data_t *gpsdata, bool)) /* run a socket main loop with a specified handler */ { for (;;) { - if (!gps_waiting(gpsdata, timeout)) { - return -1; + if (!gps_sock_waiting(gpsdata, timeout)) { + if ((*hook)(gpsdata, false) != 0) + break; } else { - (void)gps_read(gpsdata); - (*hook)(gpsdata); + (void)gps_sock_read(gpsdata); + if ((*hook)(gpsdata, true) != 0) + break; } } (void)gps_close(gpsdata); |