#include #include #include #include "mlp_priv.h" int mlp_debug_level(){ const char *do_debug = getenv("MLP_DEBUG") ; if ((do_debug != NULL)&&(do_debug[0] != '\0')){ int lvl = atoi(do_debug) ; return lvl ; } return 0 ; } int mlp_debug_on(int level){ return (level <= mlp_debug_level()) ; } void mlp_debug(int level, const char *fmt, ...){ va_list va ; va_start(va, fmt) ; char *msg = (char *)malloc(MLP_MAX_DEBUG_MSG_LENGTH * sizeof(char)) ; vsnprintf(msg, MLP_MAX_DEBUG_MSG_LENGTH - 1, fmt, va) ; va_end(va) ; _mlp_debug("c", level, msg) ; free(msg) ; } void _mlp_debug(const char *name, int level, const char *msg){ FILE *fd = stderr ; const char *env = getenv("MLP_TEST_UNDER_HARNESS") ; if ((env != NULL)&&(strcmp(env, "") != 0)&&(strcmp(env, "0") != 0)){ fd = stdout ; } if (mlp_debug_on(level)){ fprintf(fd, "# DEBUG(%-8.8s): %*s%s\n", name, level, "", msg) ; fflush(fd) ; } }