+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)
+ fflush(logf);
+ logf = fp;
+ debug = _debug;
+}
+
+void pb_log_set_debug(bool _debug)
+{
+ debug = _debug;
+}
+
+bool pb_log_get_debug(void)
+{
+ return debug;
+}
+
+FILE *pb_log_get_stream(void)