diff options
Diffstat (limited to 'src/util/util.h')
-rw-r--r-- | src/util/util.h | 78 |
1 files changed, 7 insertions, 71 deletions
diff --git a/src/util/util.h b/src/util/util.h index 04fe0cefb..7650e3e9a 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -68,7 +68,8 @@ extern int debug_timestamps; extern int debug_microseconds; extern int debug_to_file; extern const char *debug_log_file; -void debug_fn(const char *format, ...) SSS_ATTRIBUTE_PRINTF(1, 2); +void debug_fn(const char *function, int newlevel, const char *format, ...) + SSS_ATTRIBUTE_PRINTF(3, 4); int debug_get_level(int old_level); int debug_convert_old_level(int old_level); errno_t set_debug_file_from_fd(const int fd); @@ -108,6 +109,8 @@ errno_t set_debug_file_from_fd(const int fd); {"debug-microseconds", 0, POPT_ARG_INT, &debug_microseconds, 0, \ _("Show timestamps with microseconds"), NULL}, +#define DEBUG_UNWRAP(...) __VA_ARGS__ + /** \def DEBUG(level, body) \brief macro to generate debug messages @@ -125,76 +128,9 @@ errno_t set_debug_file_from_fd(const int fd); */ #define DEBUG(level, body) do { \ int __debug_macro_newlevel = debug_get_level(level); \ - if (DEBUG_IS_SET(__debug_macro_newlevel)) { \ - if (debug_timestamps) { \ - struct timeval __debug_macro_tv; \ - struct tm *__debug_macro_tm; \ - char __debug_macro_datetime[20]; \ - int __debug_macro_year; \ - gettimeofday(&__debug_macro_tv, NULL); \ - __debug_macro_tm = localtime(&__debug_macro_tv.tv_sec); \ - __debug_macro_year = __debug_macro_tm->tm_year + 1900; \ - /* get date time without year */ \ - memcpy(__debug_macro_datetime, ctime(&__debug_macro_tv.tv_sec), 19); \ - __debug_macro_datetime[19] = '\0'; \ - if (debug_microseconds) { \ - debug_fn("(%s:%.6ld %d) [%s] [%s] (%#.4x): ", \ - __debug_macro_datetime, __debug_macro_tv.tv_usec, \ - __debug_macro_year, debug_prg_name, \ - __FUNCTION__, __debug_macro_newlevel); \ - } else { \ - debug_fn("(%s %d) [%s] [%s] (%#.4x): ", \ - __debug_macro_datetime, __debug_macro_year, \ - debug_prg_name, __FUNCTION__, __debug_macro_newlevel); \ - } \ - } else { \ - debug_fn("[%s] [%s] (%#.4x): ", \ - debug_prg_name, __FUNCTION__, __debug_macro_newlevel); \ - } \ - debug_fn body; \ - } \ -} while(0) - -/** \def DEBUG_MSG(level, function, message) - \brief macro to generate debug messages with message from variable - - \param level the debug level, please use one of the SSSDBG_* macros - - \param function name of the function where DEBUG_MSG is called - - \param message message to be send (should not end with \n) -*/ -#define DEBUG_MSG(level, function, message) do { \ - int __debug_macro_newlevel = debug_get_level(level); \ - if (DEBUG_IS_SET(__debug_macro_newlevel)) { \ - if (debug_timestamps) { \ - struct timeval __debug_macro_tv; \ - struct tm *__debug_macro_tm; \ - char __debug_macro_datetime[20]; \ - int __debug_macro_year; \ - gettimeofday(&__debug_macro_tv, NULL); \ - __debug_macro_tm = localtime(&__debug_macro_tv.tv_sec); \ - __debug_macro_year = __debug_macro_tm->tm_year + 1900; \ - /* get date time without year */ \ - memcpy(__debug_macro_datetime, ctime(&__debug_macro_tv.tv_sec), 19); \ - __debug_macro_datetime[19] = '\0'; \ - if (debug_microseconds) { \ - debug_fn("(%s:%.6ld %d) [%s] [%s] (%#.4x): %s\n", \ - __debug_macro_datetime, __debug_macro_tv.tv_usec, \ - __debug_macro_year, debug_prg_name, \ - function, __debug_macro_newlevel, message); \ - } else { \ - debug_fn("(%s %d) [%s] [%s] (%#.4x): %s\n", \ - __debug_macro_datetime, __debug_macro_year, \ - debug_prg_name, function, __debug_macro_newlevel, \ - message); \ - } \ - } else { \ - debug_fn("[%s] [%s] (%#.4x): %s\n", \ - debug_prg_name, function, __debug_macro_newlevel, message); \ - } \ - } \ -} while(0) + if (DEBUG_IS_SET(__debug_macro_newlevel)) \ + debug_fn(__FUNCTION__, __debug_macro_newlevel, DEBUG_UNWRAP body); \ +} while (0) /** \def DEBUG_IS_SET(level) \brief checks whether level (must be in new format) is set in debug_level |