00001
00012 #pragma once
00013 #ifndef OSCAP_DEBUG_H
00014 #define OSCAP_DEBUG_H
00015
00016 #ifndef oscap_dprintf
00017 #if defined(NDEBUG)
00018 # define oscap_dprintf(...) while(0)
00019 #else
00020 # include <stddef.h>
00021 # include <stdarg.h>
00022 void __oscap_dprintf(const char *, const char *, size_t, const char *, ...);
00023 # define oscap_dprintf(...) __oscap_dprintf (__FILE__, __PRETTY_FUNCTION__, __LINE__, __VA_ARGS__)
00024 #endif
00025 #endif
00026
00027 #ifndef OSCAP_DEBUG_FILE
00028 # define OSCAP_DEBUG_FILE "oscap_debug.log"
00029 #endif
00030
00031 #ifndef OSCAP_DEBUG_FILE_ENV
00032 # define OSCAP_DEBUG_FILE_ENV "OSCAP_DEBUG_FILE"
00033 #endif
00034
00035 #ifndef OSCAP_DEBUG_LEVEL_ENV
00036 # define OSCAP_DEBUG_LEVEL_ENV "OSCAP_DEBUG_LEVEL"
00037 #endif
00038
00039 #ifndef NDEBUG
00040 #include <stdlib.h>
00041 extern int __debuglog_level;
00042 # define debug(l) if ((__debuglog_level = (__debuglog_level == -1 ? atoi (getenv (OSCAP_DEBUG_LEVEL_ENV) == NULL ? "0" : getenv (OSCAP_DEBUG_LEVEL_ENV)) : __debuglog_level)) && __debuglog_level >= (l))
00043 #else
00044 # define debug(l) if (0)
00045 #endif
00046
00047 #define oscap_dlprintf(l, ...) do { debug(l) { oscap_dprintf(__VA_ARGS__); }} while(0)
00048
00049 #endif