From c7d7030b8881be73bbbe1492ef4ddd6892d81a2f Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Tue, 27 Sep 2011 14:50:59 -0400 Subject: More refactoring. gpxlogger currently works with socket and DBUS methods but fails with a segfault in the shm code. --- libgps_sock.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'libgps_sock.c') diff --git a/libgps_sock.c b/libgps_sock.c index 5a5b425c..ae4d45c3 100644 --- a/libgps_sock.c +++ b/libgps_sock.c @@ -565,6 +565,22 @@ 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)) +/* run a socket main loop with a specified handler */ +{ + for (;;) { + if (!gps_waiting(gpsdata, timeout)) { + return -1; + } else { + (void)gps_read(gpsdata); + (*hook)(gpsdata); + } + } + (void)gps_close(gpsdata); + return 0; +} + #endif /* SOCKET_EXPORT_ENABLE */ /* end */ -- cgit v1.2.1