summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2011-06-17 04:38:12 -0400
committerEric S. Raymond <esr@thyrsus.com>2011-06-17 04:38:12 -0400
commit607cdcca3ec69f74245b06cbb147e2435360d190 (patch)
tree766be1d9c7d14055ec58a45e79de9bc49bd04915
parentfd954cbf588c9a99ad21be16ca80739f58ba465b (diff)
downloadgpsd-607cdcca3ec69f74245b06cbb147e2435360d190.tar.gz
Elimination of gpsd_hexdump_level.
The few gpsd_hexdump() calls left have explicit guards.
-rw-r--r--gpsctl.c1
-rw-r--r--gpsd.c2
-rw-r--r--gpsd.h-tail2
-rw-r--r--gpsdecode.c1
-rw-r--r--gpspacket.c2
-rw-r--r--hex.c19
-rw-r--r--libgpsd_core.c1
-rw-r--r--packet.c34
-rw-r--r--test_packet.c2
9 files changed, 21 insertions, 43 deletions
diff --git a/gpsctl.c b/gpsctl.c
index 7546b6dd..7eb94d9a 100644
--- a/gpsctl.c
+++ b/gpsctl.c
@@ -312,7 +312,6 @@ int main(int argc, char **argv)
break;
case 'D': /* set debugging level */
debuglevel = atoi(optarg);
- gpsd_hexdump_level = debuglevel;
#ifdef CLIENTDEBUG_ENABLE
gps_enable_debug(debuglevel, stderr);
#endif /* CLIENTDEBUG_ENABLE */
diff --git a/gpsd.c b/gpsd.c
index f25eecec..730008a9 100644
--- a/gpsd.c
+++ b/gpsd.c
@@ -1761,13 +1761,11 @@ int main(int argc, char *argv[])
(void)setlocale(LC_NUMERIC, "C");
context.debug = 0;
- gpsd_hexdump_level = 0;
gps_context_init(&context);
while ((option = getopt(argc, argv, "F:D:S:bGhlNnP:V")) != -1) {
switch (option) {
case 'D':
context.debug = (int)strtol(optarg, 0, 0);
- gpsd_hexdump_level = context.debug;
#ifdef CLIENTDEBUG_ENABLE
gps_enable_debug(context.debug, stderr);
#endif /* CLIENTDEBUG_ENABLE */
diff --git a/gpsd.h-tail b/gpsd.h-tail
index 084c25d6..16d92d93 100644
--- a/gpsd.h-tail
+++ b/gpsd.h-tail
@@ -124,6 +124,7 @@ struct gps_packet_t {
unsigned long char_counter; /* count characters processed */
unsigned long retry_counter; /* count sniff retries */
unsigned counter; /* packets since last driver switch */
+ int debug; /* lexer debug level */
/*
* ISGPS200 decoding context.
*
@@ -668,7 +669,6 @@ extern gps_mask_t gpsd_interpret_subframe(struct gps_device_t *, unsigned int,
uint32_t[]);
extern gps_mask_t gpsd_interpret_subframe_raw(struct gps_device_t *,
unsigned int, uint32_t[]);
-extern int gpsd_hexdump_level;
extern /*@ observer @*/ char *gpsd_hexdump(/*@null@*/const void *, size_t);
extern /*@ observer @*/ char *gpsd_hexdump_wrapper(/*@null@*/const void *, size_t, int);
extern int gpsd_hexpack(/*@in@*/const char *, /*@out@*/char *, size_t);
diff --git a/gpsdecode.c b/gpsdecode.c
index 13f66eb5..b1634392 100644
--- a/gpsdecode.c
+++ b/gpsdecode.c
@@ -514,7 +514,6 @@ int main(int argc, char **argv)
case 'D':
verbose = atoi(optarg);
- gpsd_hexdump_level = verbose;
#if defined(CLIENTDEBUG_ENABLE) && defined(SOCKET_EXPORT_ENABLE)
json_enable_debug(verbose - 2, stderr);
#endif
diff --git a/gpspacket.c b/gpspacket.c
index 427af487..ab0038d8 100644
--- a/gpspacket.c
+++ b/gpspacket.c
@@ -20,8 +20,6 @@ void gpsd_report(int errlevel, const char *fmt, ... )
PyObject *args;
va_list ap;
- gpsd_hexdump_level = errlevel;
-
if (!report_callback) /* no callback defined, exit early */
return;
diff --git a/hex.c b/hex.c
index 96f4dce7..5c6d9a38 100644
--- a/hex.c
+++ b/hex.c
@@ -6,25 +6,6 @@
#include "gpsd.h"
-int gpsd_hexdump_level = -1;
-/*
- * A wrapper around gpsd_hexdump to prevent wasting cpu time by hexdumping
- * buffers and copying strings that will never be printed. only messages at
- * level "N" and lower will be printed. By way of example, without any -D
- * options, gpsd probably won't ever call the real gpsd_hexdump. At -D2,
- * LOG_PROG (and higher) won't get to call the real gpsd_hexdump. For high
- * speed, chatty protocols, this can save a lot of CPU.
- */
-char *gpsd_hexdump_wrapper(const void *binbuf, size_t binbuflen,
- int msg_debug_level)
-{
-#ifndef SQUELCH_ENABLE
- if (msg_debug_level <= gpsd_hexdump_level)
- return gpsd_hexdump(binbuf, binbuflen);
-#endif /* SQUELCH_ENABLE */
- return "";
-}
-
char /*@ observer @*/ *gpsd_hexdump(const void *binbuf, size_t binbuflen)
{
static char hexbuf[MAX_PACKET_LENGTH * 2 + 1];
diff --git a/libgpsd_core.c b/libgpsd_core.c
index 10f2489c..442e8d37 100644
--- a/libgpsd_core.c
+++ b/libgpsd_core.c
@@ -185,6 +185,7 @@ void gpsd_clear(struct gps_device_t *session)
session->driver.sirf.satcounter = 0;
#endif /* SIRF_ENABLE */
packet_init(&session->packet);
+ session->packet.debug = session->context->debug;
// session->gpsdata.online = 0;
session->gpsdata.fix.mode = MODE_NOT_SEEN;
session->gpsdata.status = STATUS_NO_FIX;
diff --git a/packet.c b/packet.c
index 8bcfe0e1..de831260 100644
--- a/packet.c
+++ b/packet.c
@@ -1295,10 +1295,10 @@ static void packet_accept(struct gps_packet_t *lexer, int packet_type)
lexer->outbuflen = packetlen;
lexer->outbuffer[packetlen] = '\0';
lexer->type = packet_type;
- gpsd_report(LOG_RAW+1, "Packet type %d accepted %zu = %s\n",
+ if (lexer->debug >= LOG_RAW+1)
+ gpsd_report(LOG_RAW+1, "Packet type %d accepted %zu = %s\n",
packet_type, packetlen,
- gpsd_hexdump_wrapper(lexer->outbuffer, lexer->outbuflen,
- LOG_RAW+1));
+ gpsd_hexdump(lexer->outbuffer, lexer->outbuflen));
} else {
gpsd_report(LOG_ERROR, "Rejected too long packet type %d len %zu\n",
packet_type, packetlen);
@@ -1312,11 +1312,11 @@ static void packet_discard(struct gps_packet_t *lexer)
size_t remaining = lexer->inbuflen - discard;
lexer->inbufptr = memmove(lexer->inbuffer, lexer->inbufptr, remaining);
lexer->inbuflen = remaining;
- gpsd_report(LOG_RAW + 1,
- "Packet discard of %zu, chars remaining is %zu = %s\n",
- discard, remaining,
- gpsd_hexdump_wrapper(lexer->inbuffer, lexer->inbuflen,
- LOG_RAW + 1));
+ if (lexer->debug >= LOG_RAW+1)
+ gpsd_report(LOG_RAW + 1,
+ "Packet discard of %zu, chars remaining is %zu = %s\n",
+ discard, remaining,
+ gpsd_hexdump(lexer->inbuffer, lexer->inbuflen));
}
static void character_discard(struct gps_packet_t *lexer)
@@ -1324,10 +1324,10 @@ static void character_discard(struct gps_packet_t *lexer)
{
memmove(lexer->inbuffer, lexer->inbuffer + 1, (size_t)-- lexer->inbuflen);
lexer->inbufptr = lexer->inbuffer;
- gpsd_report(LOG_RAW + 1, "Character discarded, buffer %zu chars = %s\n",
- lexer->inbuflen,
- gpsd_hexdump_wrapper(lexer->inbuffer, lexer->inbuflen,
- LOG_RAW + 1));
+ if (lexer->debug >= LOG_RAW+1)
+ gpsd_report(LOG_RAW + 1, "Character discarded, buffer %zu chars = %s\n",
+ lexer->inbuflen,
+ gpsd_hexdump(lexer->inbuffer, lexer->inbuflen));
}
/* get 0-origin big-endian words relative to start of packet buffer */
@@ -1939,11 +1939,11 @@ ssize_t packet_get(int fd, struct gps_packet_t *lexer)
return -1;
}
} else {
- gpsd_report(LOG_RAW + 1,
- "Read %zd chars to buffer offset %zd (total %zd): %s\n",
- recvd, lexer->inbuflen, lexer->inbuflen + recvd,
- gpsd_hexdump_wrapper(lexer->inbufptr, (size_t) recvd,
- LOG_RAW + 1));
+ if (lexer->debug >= LOG_RAW+1)
+ gpsd_report(LOG_RAW + 1,
+ "Read %zd chars to buffer offset %zd (total %zd): %s\n",
+ recvd, lexer->inbuflen, lexer->inbuflen + recvd,
+ gpsd_hexdump(lexer->inbufptr, (size_t) recvd));
lexer->inbuflen += recvd;
}
gpsd_report(LOG_SPIN, "packet_get() fd %d -> %zd (%d)\n",
diff --git a/test_packet.c b/test_packet.c
index e403ad30..ad0a61e4 100644
--- a/test_packet.c
+++ b/test_packet.c
@@ -276,6 +276,7 @@ static int packet_test(struct map *mp)
int failure = 0;
packet_init(&packet);
+ packet.debug = verbose;
/*@i@*/ memcpy(packet.inbufptr = packet.inbuffer, mp->test, mp->testlen);
packet.inbuflen = mp->testlen;
/*@ -compdef -uniondef -usedef -formatcode @*/
@@ -303,6 +304,7 @@ static void runon_test(struct map *mp)
ssize_t st;
packet_init(&packet);
+ packet.debug = verbose;
/*@i@*/ memcpy(packet.inbufptr = packet.inbuffer, mp->test, mp->testlen);
packet.inbuflen = mp->testlen;
/*@ -compdef -uniondef -usedef -formatcode @*/