#include "pn_log.h" #include "pn_printf.h" #include #include #include #include static inline char log_level_to_char(unsigned level) { switch (level) { case 0: return 'E'; case 1: return 'W'; case 2: return 'T'; case 3: return 'I'; case 4: return 'D'; default: return 'O'; } } void _pn_helper(unsigned level, void *object, const char *file, const char *function, unsigned line, const char *fmt, ...) { char *tmp; va_list args; char l = log_level_to_char(level); va_start(args, fmt); tmp = pn_strdup_vprintf(fmt, args); if (level <= 1) fprintf(stdout, "%c: %s: %s\n", l, function, tmp); else if (level == 2) fprintf(stdout, "%c: %s:%s(%u): %s\n", l, file, function, line, tmp); else if (level == 3) fprintf(stdout, "%c: %s: %s\n", l, function, tmp); #if defined(DEBUG) else if (level == 4) fprintf(stdout, "%c: %s:%s(%u): %s\n", l, file, function, line, tmp); #endif fflush(stdout); free(tmp); va_end(args); }