From 64e57722daa3ee26140a73b908b7d0e2db117d2f Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Thu, 26 Apr 2018 15:57:48 -0400 Subject: [PATCH] Add some more debug facilities. Signed-off-by: Peter Jones --- src/error.c | 25 +++++++++++++++++++++++++ src/libefivar.map.in | 6 ++++++ src/util.h | 28 +++++++++++++++++++++++++++- 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/error.c b/src/error.c index 7808e85..d1008a3 100644 --- a/src/error.c +++ b/src/error.c @@ -157,3 +157,28 @@ efi_error_clear(void) error_table = NULL; current = 0; } + +static int efi_verbose; +static FILE *efi_errlog; + +FILE PUBLIC * +efi_get_logfile(void) +{ + if (efi_errlog) + return efi_errlog; + return stderr; +} + +void PUBLIC +efi_set_verbose(int verbosity, FILE *errlog) +{ + efi_verbose = verbosity; + if (errlog) + efi_errlog = errlog; +} + +int PUBLIC +efi_get_verbose(void) +{ + return efi_verbose; +} diff --git a/src/libefivar.map.in b/src/libefivar.map.in index 4036f57..31f696d 100644 --- a/src/libefivar.map.in +++ b/src/libefivar.map.in @@ -120,3 +120,9 @@ LIBEFIVAR_1.35 { global: efi_get_variable_exists; efi_guid_fwupdate; } LIBEFIVAR_1.33; + +LIBEFIVAR_1.36 { + global: efi_set_verbose; + efi_get_verbose; + efi_get_logfile; +} LIBEFIVAR_1.35; diff --git a/src/util.h b/src/util.h index e6827c0..388542e 100644 --- a/src/util.h +++ b/src/util.h @@ -24,14 +24,19 @@ #include #include #include +#include #include #include -#include #include +#include #include +#include +#include #include #include #include +#include +#include #include #include @@ -349,4 +354,25 @@ swizzle_guid_to_uuid(efi_guid_t *guid) u16[1] = __builtin_bswap16(u16[1]); } +#define debug_(file, line, func, level, fmt, args...) \ + ({ \ + if (efi_get_verbose() >= level) { \ + FILE *logfile_ = efi_get_logfile(); \ + int len_ = strlen(fmt); \ + fprintf(logfile_, "%s:%d %s(): ", \ + file, line, func); \ + fprintf(logfile_, fmt, ## args); \ + if (!len_ || fmt[len_ - 1] != '\n') \ + fprintf(logfile_, "\n"); \ + } \ + }) + +#define debug(level, fmt, args...) debug_(__FILE__, __LINE__, __func__, level, fmt, ## args) + +#define DEBUG 1 + +extern void PUBLIC efi_set_verbose(int verbosity, FILE *errlog); +extern int PUBLIC efi_get_verbose(void); +extern FILE PUBLIC *efi_get_logfile(void); + #endif /* EFIVAR_UTIL_H */ -- 2.11.0