diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2015-03-30 17:10:53 -0400 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2015-03-30 17:10:53 -0400 |
commit | 28bf37132d86cc59320e21d843960d086cef664c (patch) | |
tree | bf085b5f89f1d1061b6a88ecc66c50721b13d86c /libgps_sock.c | |
parent | ecb7e1ff3ec73000918c56861c55258c2d4deada (diff) | |
download | gpsd-28bf37132d86cc59320e21d843960d086cef664c.tar.gz |
Retire splint from our set of static analyzers.
The proximate cause was that we've been seing emission of error
messages that were randomly and disturbingly variable across different
environments - notably Raspbian and Gentoo splint gave nontrivially
different results than Ubuntu 14.10 splint. And this was *not* due to
Ubuntu patches! A pristine splint built from the 3.1.2 tarball on
Ubuntu didn't match the Raspbian and Gentoo results either.
But this has been coming for a while. Easy access to more modern
static analyzers such as coverity, scan-build and cppcheck has been
decreasing the utility of splint, which is unmaintained and somewhat
buggy and not easy to use.
Only file not cleaned is ppsthread.c, because Gary has been working
on it during this cleanup.
All regression tests pass. PPS observed live on GR601-W.
Diffstat (limited to 'libgps_sock.c')
-rw-r--r-- | libgps_sock.c | 33 |
1 files changed, 5 insertions, 28 deletions
diff --git a/libgps_sock.c b/libgps_sock.c index a87cd444..169a9003 100644 --- a/libgps_sock.c +++ b/libgps_sock.c @@ -17,15 +17,11 @@ #include <sys/types.h> #include <sys/stat.h> #include <sys/select.h> -#ifndef S_SPLINT_S #include <sys/socket.h> #include <unistd.h> -#endif /* S_SPLINT_S */ #ifndef USE_QT -#ifndef S_SPLINT_S #include <sys/socket.h> -#endif /* S_SPLINT_S */ #else #include <QTcpSocket> #endif /* USE_QT */ @@ -37,11 +33,6 @@ #ifdef SOCKET_EXPORT_ENABLE #include "gps_json.h" -#ifdef S_SPLINT_S -extern char *strtok_r(char *, const char *, char **); -#endif /* S_SPLINT_S */ - -/*@-matchfields@*/ struct privdata_t { bool newstyle; @@ -52,11 +43,9 @@ struct privdata_t int waitcount; #endif /* LIBGPS_DEBUG */ }; -/*@+matchfields@*/ -/*@-branchstate@*/ -int gps_sock_open(/*@null@*/const char *host, /*@null@*/const char *port, - /*@out@*/ struct gps_data_t *gpsdata) +int gps_sock_open(const char *host, const char *port, + struct gps_data_t *gpsdata) { if (!host) host = "localhost"; @@ -96,7 +85,6 @@ int gps_sock_open(/*@null@*/const char *host, /*@null@*/const char *port, #endif /* LIBGPS_DEBUG */ return 0; } -/*@+branchstate@*/ bool gps_sock_waiting(const struct gps_data_t *gpsdata, int timeout) /* is there input waiting from the GPS? */ @@ -124,7 +112,6 @@ bool gps_sock_waiting(const struct gps_data_t *gpsdata, int timeout) #endif } -/*@-usereleased -compdef@*/ int gps_sock_close(struct gps_data_t *gpsdata) /* close a gpsd connection */ { @@ -143,10 +130,8 @@ int gps_sock_close(struct gps_data_t *gpsdata) return 0; #endif } -/*@+usereleased +compdef@*/ -/*@-compdef -usedef -uniondef@*/ -int gps_sock_read(/*@out@*/struct gps_data_t *gpsdata) +int gps_sock_read(struct gps_data_t *gpsdata) /* wait for and read data being streamed from the daemon */ { char *eol; @@ -213,18 +198,14 @@ int gps_sock_read(/*@out@*/struct gps_data_t *gpsdata) response_length = eol - PRIVATE(gpsdata)->buffer + 1; gpsdata->online = timestamp(); status = gps_unpack(PRIVATE(gpsdata)->buffer, gpsdata); - /*@+matchanyintegral@*/ memmove(PRIVATE(gpsdata)->buffer, PRIVATE(gpsdata)->buffer + response_length, PRIVATE(gpsdata)->waiting - response_length); - /*@-matchanyintegral@*/ PRIVATE(gpsdata)->waiting -= response_length; gpsdata->set |= PACKET_SET; return (status == 0) ? (int)response_length : status; } -/*@+compdef -usedef +uniondef@*/ -/*@ -branchstate -usereleased -mustfreefresh -nullstate -usedef @*/ int gps_unpack(char *buf, struct gps_data_t *gpsdata) /* unpack a gpsd response into a status structure, buf must be writeable. * gps_unpack() currently returns 0 in all cases, but should it ever need to @@ -253,9 +234,8 @@ int gps_unpack(char *buf, struct gps_data_t *gpsdata) #endif return 0; } -/*@ +compdef @*/ -const char /*@observer@*/ *gps_sock_data(const struct gps_data_t *gpsdata) +const char *gps_sock_data(const struct gps_data_t *gpsdata) /* return the contents of the client data buffer */ { return PRIVATE(gpsdata)->buffer; @@ -281,8 +261,7 @@ int gps_sock_send(struct gps_data_t *gpsdata, const char *buf) #endif } -int gps_sock_stream(struct gps_data_t *gpsdata, unsigned int flags, - /*@null@*/ void *d) +int gps_sock_stream(struct gps_data_t *gpsdata, unsigned int flags, void *d) /* ask gpsd to stream reports at you, hiding the command details */ { char buf[GPS_JSON_COMMAND_MAX]; @@ -330,10 +309,8 @@ int gps_sock_stream(struct gps_data_t *gpsdata, unsigned int flags, (void)strlcat(buf, "\"split24\":true,", sizeof(buf)); if (flags & WATCH_PPS) (void)strlcat(buf, "\"pps\":true,", sizeof(buf)); - /*@-nullpass@*//* shouldn't be needed, splint has a bug */ if (flags & WATCH_DEVICE) str_appendf(buf, sizeof(buf), "\"device\":\"%s\",", (char *)d); - /*@+nullpass@*/ str_rstrip_char(buf, ','); (void)strlcat(buf, "};", sizeof(buf)); libgps_debug_trace((DEBUG_CALLS, "gps_stream() enable command: %s\n", buf)); |