va_end(ap);
}
+void _pb_log_fn(const char *func, const char *fmt, ...)
+{
+ va_list ap;
+ pb_log("%s: ", func);
+ va_start(ap, fmt);
+ __log(fmt, ap);
+ va_end(ap);
+}
+
void pb_debug(const char *fmt, ...)
{
va_list ap;
va_end(ap);
}
+void _pb_debug_fn(const char *func, const char *fmt, ...)
+{
+ va_list ap;
+ if (!debug)
+ return;
+ pb_log("%s: ", func);
+ va_start(ap, fmt);
+ __log(fmt, ap);
+ va_end(ap);
+}
+
+void _pb_debug_fl(const char *func, int line, const char *fmt, ...)
+{
+ va_list ap;
+ if (!debug)
+ return;
+ pb_log("%s:%d: ", func, line);
+ va_start(ap, fmt);
+ __log(fmt, ap);
+ va_end(ap);
+}
+
void __pb_log_init(FILE *fp, bool _debug)
{
if (logf)
#include <stdio.h>
void __attribute__ ((format (printf, 1, 2))) pb_log(const char *fmt, ...);
+void __attribute__ ((format (printf, 2, 3))) _pb_log_fn(const char *func,
+ const char *fmt, ...);
+#define pb_log_fn(args...) _pb_log_fn(__func__, args)
+
void __attribute__ ((format (printf, 1, 2))) pb_debug(const char *fmt, ...);
+void __attribute__ ((format (printf, 2, 3))) _pb_debug_fn(const char *func,
+ const char *fmt, ...);
+#define pb_debug_fn(args...) _pb_debug_fn(__func__, args)
+void __attribute__ ((format (printf, 3, 4))) _pb_debug_fl(const char *func,
+ int line, const char *fmt, ...);
+#define pb_debug_fl(args...) _pb_debug_fl(__func__, __LINE__, args)
void __pb_log_init(FILE *stream, bool debug);