#include #include #include #include #include #include static gint debug_level = DEBUG_ALWAYS; static void gm_debug_msg_real(FILE *f, struct tm *timet, gchar *line, va_list args) { fprintf(f, "[%02d:%02d:%02d] # ", timet->tm_hour, timet->tm_min, timet->tm_sec); vfprintf(f, line, args); fprintf(f, "\n"); } void gm_debug_msg(gint level, gchar *line, ...) { struct tm *timet; time_t timer; va_list args; if (debug_level | level == debug_level) { va_start(args, line); timer = time(0); timet = localtime(&timer); if (level & DEBUG_ALWAYS) { gm_debug_msg_real(stdout, timet, line, args); } if (level & DEBUG_ALWAYS != level) { gm_debug_msg_real(stderr, timet, line, args); } va_end(args); } } void debug_set_level(gint level) { debug_level = level; }