00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #pragma once
00029 #ifndef OSCAP_DEBUG_PRIV_H_
00030 #define OSCAP_DEBUG_PRIV_H_
00031
00032 #include "util.h"
00033 #include "public/debug.h"
00034
00035 #define OSCAP_DEBUGOBJ_SEXP 1
00036
00037 #if defined(NDEBUG)
00038 # define oscap_dlprintf(...) while(0)
00039 # define debug(l) if (0)
00040 # define dO(type, obj) while(0)
00041 #else
00042 # include <stdlib.h>
00043 # include <stddef.h>
00044 # include <stdarg.h>
00045
00046 enum {
00047 DBG_E = 1,
00048 DBG_W,
00049 DBG_I
00050 };
00051
00052 # define __dlprintf_wrapper(l, ...) __oscap_dlprintf (l, __FILE__, __PRETTY_FUNCTION__, __LINE__, __VA_ARGS__)
00053
00054 extern int __debuglog_level;
00055
00069 # 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))
00070
00081 void __oscap_dlprintf(int level, const char *file, const char *fn, size_t line, const char *fmt, ...);
00082
00088 # define oscap_dlprintf(l, ...) __dlprintf_wrapper (l, __VA_ARGS__)
00089
00090 void __oscap_debuglog_object (const char *file, const char *fn, size_t line, int objtype, void *obj);
00091
00092 # define dO(type, obj) __oscap_debuglog_object(__FILE__, __PRETTY_FUNCTION__, __LINE__, type, obj)
00093
00094 #endif
00095
00096 #define dI(...) oscap_dlprintf(DBG_I, __VA_ARGS__)
00097 #define dW(...) oscap_dlprintf(DBG_W, __VA_ARGS__)
00098 #define dE(...) oscap_dlprintf(DBG_E, __VA_ARGS__)
00099
00100 #endif