summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPete Batard <pbatard@gmail.com>2010-01-14 01:37:47 +0000
committerPete Batard <pbatard@gmail.com>2010-01-14 01:37:47 +0000
commite026f61422cd5439eac40a66fd41f7659061e60a (patch)
tree963770defd4894319516614919f2c0906d3f4718
parent29ed28f769cf0985c89c739117cd19094c8871c8 (diff)
downloadlibusb-e026f61422cd5439eac40a66fd41f7659061e60a.tar.gz
svn r59: - MSVC6 fixes for variadic log macros (Michael Plante)
-rw-r--r--libusb/core.c17
-rw-r--r--libusb/libusbi.h45
2 files changed, 55 insertions, 7 deletions
diff --git a/libusb/core.c b/libusb/core.c
index 535ecf3..1728e35 100644
--- a/libusb/core.c
+++ b/libusb/core.c
@@ -1546,10 +1546,9 @@ API_EXPORTED void libusb_exit(struct libusb_context *ctx)
free(ctx);
}
-void usbi_log(struct libusb_context *ctx, enum usbi_log_level level,
- const char *function, const char *format, ...)
+void usbi_log_v(struct libusb_context *ctx, enum usbi_log_level level,
+ const char *function, const char *format, va_list args)
{
- va_list args;
FILE *stream = stdout;
const char *prefix;
@@ -1587,10 +1586,18 @@ void usbi_log(struct libusb_context *ctx, enum usbi_log_level level,
fprintf(stream, "libusb:%s [%s] ", prefix, function);
- va_start (args, format);
vfprintf(stream, format, args);
- va_end (args);
fprintf(stream, "\n");
}
+void usbi_log(struct libusb_context *ctx, enum usbi_log_level level,
+ const char *function, const char *format, ...)
+{
+ va_list args;
+
+ va_start (args, format);
+ usbi_log_v(ctx, level, function, format, args);
+ va_end (args);
+}
+
diff --git a/libusb/libusbi.h b/libusb/libusbi.h
index 6b501ae..462e864 100644
--- a/libusb/libusbi.h
+++ b/libusb/libusbi.h
@@ -121,9 +121,13 @@ enum usbi_log_level {
LOG_LEVEL_ERROR,
};
-void usbi_log(struct libusb_context *ctx, enum usbi_log_level,
+void usbi_log(struct libusb_context *ctx, enum usbi_log_level level,
const char *function, const char *format, ...);
+
+#if !defined(_MSC_VER) || _MSC_VER > 1200
+
+
#ifdef ENABLE_LOGGING
#define _usbi_log(ctx, level, ...) usbi_log(ctx, level, __FUNCTION__, __VA_ARGS__)
#else
@@ -140,6 +144,44 @@ void usbi_log(struct libusb_context *ctx, enum usbi_log_level,
#define usbi_warn(ctx, ...) _usbi_log(ctx, LOG_LEVEL_WARNING, __VA_ARGS__)
#define usbi_err(ctx, ...) _usbi_log(ctx, LOG_LEVEL_ERROR, __VA_ARGS__)
+
+#else
+
+
+void usbi_log_v(struct libusb_context *ctx, enum usbi_log_level level,
+ const char *function, const char *format, va_list args);
+
+#ifdef ENABLE_LOGGING
+#define LOG_BODY(ctxt, level) \
+{ \
+ va_list args; \
+ va_start (args, format); \
+ usbi_log_v(ctxt, level, "", format, args); \
+ va_end(args); \
+}
+#else
+#define LOG_BODY(ctxt, level) { }
+#endif
+
+void inline usbi_info(struct libusb_context *ctx, const char *format, ...)
+ LOG_BODY(ctx,LOG_LEVEL_INFO)
+void inline usbi_warn(struct libusb_context *ctx, const char *format, ...)
+ LOG_BODY(ctx,LOG_LEVEL_WARNING)
+void inline usbi_err( struct libusb_context *ctx, const char *format, ...)
+ LOG_BODY(ctx,LOG_LEVEL_ERROR)
+
+void inline usbi_dbg(const char *format, ...)
+#ifdef ENABLE_DEBUG_LOGGING
+ LOG_BODY(NULL,LOG_LEVEL_DEBUG)
+#else
+{ }
+#endif
+
+
+#endif
+
+
+
#define USBI_GET_CONTEXT(ctx) if (!(ctx)) (ctx) = usbi_default_context
#define DEVICE_CTX(dev) ((dev)->ctx)
#define HANDLE_CTX(handle) (DEVICE_CTX((handle)->dev))
@@ -817,4 +859,3 @@ extern const struct usbi_os_backend darwin_backend;
extern const struct usbi_os_backend windows_backend;
#endif
-