diff options
Diffstat (limited to 'gpspipe.c')
-rw-r--r-- | gpspipe.c | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -37,11 +37,21 @@ #include <string.h> #include <strings.h> #include <fcntl.h> +#ifdef HAVE_TERMIOS_H #include <termios.h> +#endif /* HAVE_TERMIOS_H */ #include <sys/time.h> #include <sys/types.h> #include <sys/stat.h> +#ifdef HAVE_SYS_SELECT_H #include <sys/select.h> +#endif /* HAVE_SYS_SELECT_H */ +#ifdef HAVE_SYS_SOCKET_H +#include <sys/socket.h> +#endif /* HAVE_SYS_SOCKET_H */ +#ifdef HAVE_WINSOCK2_H +#include <winsock2.h> +#endif /* HAVE_WINSOCK2_H */ #include <unistd.h> #include "gpsd.h" @@ -74,6 +84,7 @@ static void open_serial(char *device) exit(EXIT_FAILURE); } +#ifdef HAVE_TERMIOS_H /* Save current serial port settings for later */ if (tcgetattr(fd_out, &oldtio) != 0) { (void)fprintf(stderr, "gpspipe: error reading serial port settings\n"); @@ -94,6 +105,7 @@ static void open_serial(char *device) (void)fprintf(stderr, "gpspipe: error configuring serial port\n"); exit(EXIT_FAILURE); } +#endif /* HAVE_TERMIOS_H */ } static void usage(void) @@ -319,7 +331,7 @@ int main(int argc, char **argv) /* reading directly from the socket avoids decode overhead */ errno = 0; - r = (int)read(gpsdata.gps_fd, buf, sizeof(buf)); + r = (int)recv(gpsdata.gps_fd, buf, sizeof(buf), 0); if (r > 0) { int i = 0; int j = 0; |