summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPete Batard <pete@akeo.ie>2012-05-24 16:18:58 +0100
committerPete Batard <pete@akeo.ie>2012-05-28 10:54:41 +0100
commit500b037e7dd6784f9db0bab5f1c3ff417ed875e2 (patch)
treecc5b017620f2b9580b273c66b36edee85d114a3f
parent933a319469bcccc962031c989e39d9d1f44f2885 (diff)
Core: Only display timestamps in debug mode and use init() as origin
-rw-r--r--libusb/core.c33
-rw-r--r--libusb/version_nano.h2
2 files changed, 24 insertions, 11 deletions
diff --git a/libusb/core.c b/libusb/core.c
index 8d8ec01..16e57dd 100644
--- a/libusb/core.c
+++ b/libusb/core.c
@@ -51,6 +51,7 @@ const struct libusb_version libusb_version_internal =
LIBUSB_RC, "unused - please use the nano" };
static int default_context_refcnt = 0;
static usbi_mutex_static_t default_context_lock = USBI_MUTEX_INITIALIZER;
+static struct timeval timestamp_origin = { 0, 0 };
/**
* \mainpage libusbx-1.0 API Reference
@@ -1614,6 +1615,11 @@ int API_EXPORTED libusb_init(libusb_context **context)
int r = 0;
usbi_mutex_static_lock(&default_context_lock);
+
+ if (!timestamp_origin.tv_sec) {
+ usbi_gettimeofday(&timestamp_origin, NULL);
+ }
+
if (!context && usbi_default_context) {
usbi_dbg("reusing default context");
default_context_refcnt++;
@@ -1781,10 +1787,14 @@ void usbi_log_v(struct libusb_context *ctx, enum usbi_log_level level,
FILE *stream = stdout;
const char *prefix;
struct timeval now;
- static struct timeval first = { 0, 0 };
+ int global_debug;
+ static int has_debug_header_been_displayed = 0;
-#ifndef ENABLE_DEBUG_LOGGING
+#ifdef ENABLE_DEBUG_LOGGING
+ global_debug = 1;
+#else
USBI_GET_CONTEXT(ctx);
+ global_debug = (ctx->debug == LOG_LEVEL_DEBUG);
if (!ctx->debug)
return;
if (level == LOG_LEVEL_WARNING && ctx->debug < LOG_LEVEL_WARNING)
@@ -1794,18 +1804,17 @@ void usbi_log_v(struct libusb_context *ctx, enum usbi_log_level level,
#endif
usbi_gettimeofday(&now, NULL);
- if (!first.tv_sec) {
- first.tv_sec = now.tv_sec;
- first.tv_usec = now.tv_usec;
+ if ((global_debug) && (!has_debug_header_been_displayed)) {
+ has_debug_header_been_displayed = 1;
fprintf(stream, "[timestamp] [threadID] facility level [function call] <message>\n");
fprintf(stream, "--------------------------------------------------------------------------------\n");
}
- if (now.tv_usec < first.tv_usec) {
+ if (now.tv_usec < timestamp_origin.tv_usec) {
now.tv_sec--;
now.tv_usec += 1000000;
}
- now.tv_sec -= first.tv_sec;
- now.tv_usec -= first.tv_usec;
+ now.tv_sec -= timestamp_origin.tv_sec;
+ now.tv_usec -= timestamp_origin.tv_usec;
switch (level) {
case LOG_LEVEL_INFO:
@@ -1829,8 +1838,12 @@ void usbi_log_v(struct libusb_context *ctx, enum usbi_log_level level,
break;
}
- fprintf(stream, "[%2d.%06d] [%08x] libusbx: %s [%s] ",
- (int)now.tv_sec, (int)now.tv_usec, usbi_get_tid(), prefix, function);
+ if (global_debug) {
+ fprintf(stream, "[%2d.%06d] [%08x] libusbx: %s [%s]",
+ (int)now.tv_sec, (int)now.tv_usec, usbi_get_tid(), prefix, function);
+ } else {
+ fprintf(stream, "libusbx: %s [%s] ", prefix, function);
+ }
vfprintf(stream, format, args);
diff --git a/libusb/version_nano.h b/libusb/version_nano.h
index 20ce803..c99cbbe 100644
--- a/libusb/version_nano.h
+++ b/libusb/version_nano.h
@@ -1 +1 @@
-#define LIBUSB_NANO 10510
+#define LIBUSB_NANO 10511