#include "mlp.h" #include #include #include static int do_debug(int level){ const char *do_debug = getenv("MLP_DEBUG") ; if ((do_debug != NULL)&&(do_debug[0] != '\0')){ int lvl = atoi(do_debug) ; if (level <= lvl){ return 1 ; } } return 0 ; } MLP_EXTERN_C void mlp_debug(int level, const char *fmt, ...){ FILE *fd = stderr ; bool add_hash = false ; const char *env = getenv("MLP_TEST_UNDER_HARNESS") ; if ((env != NULL)&&(strcmp(env, "") != 0)&&(strcmp(env, "0") != 0)){ fd = stdout ; add_hash = true ; } if (do_debug(level)){ va_list va ; va_start(va, fmt) ; if (add_hash){ fprintf(fd, "# ") ; } fprintf(fd, "DEBUG: %*s", level, "") ; vfprintf(fd, fmt, va) ; va_end(va) ; fprintf(fd, "\n") ; fflush(fd) ; } } #if 0 void debug_value(const mlp_value *value, const char *fmt, ...){ va_list va ; va_start(va, fmt) ; char name[1024] ; vsnprintf(name, 1023, fmt, va) ; va_end(va) ; if (value != NULL){ switch (value->type){ /* case MLP_UNKNOWN: mlp_debug(5, "Value %-10s:\tunknown\t(%p)", name, value->value.v) ; break ; */ case MLP_LONG: mlp_debug(5, "Value %-10s:\tlong\t(%ld)", name, value->value.l) ; break ; case MLP_DOUBLE: mlp_debug(5, "Value %-10s:\tdouble\t(%lf)", name, value->value.d) ; break ; case MLP_STRING: mlp_debug(5, "Value %-10s:\tstring\t(%s)", name, value->value.s) ; break ; default: mlp_debug(5, "Value %-10s:\tUNKNOWN TYPE %d!!!", name, value->type) ; break ; } } else { mlp_debug(5, "Value %-10s:\tNULL", name) ; } } #endif