From: Arran Cudbard-Bell Date: Wed, 7 Jun 2017 20:01:13 +0000 (-0400) Subject: Add perr functions to print fr_strerror() stacks related to config issues X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=48c92f0767e5e05c265bbdb2b39e2ce7b5f9ff8d;p=thirdparty%2Ffreeradius-server.git Add perr functions to print fr_strerror() stacks related to config issues --- diff --git a/src/include/conf_file.h b/src/include/conf_file.h index 407e9267f0f..ee271aa9c4e 100644 --- a/src/include/conf_file.h +++ b/src/include/conf_file.h @@ -511,7 +511,9 @@ CONF_ITEM *cf_section_to_item(CONF_SECTION const *cs); */ void cf_log_err(CONF_ITEM const *ci, char const *fmt, ...) CC_HINT(format (printf, 2, 3)); void cf_log_err_cs(CONF_SECTION const *cs, char const *fmt, ...) CC_HINT(format (printf, 2, 3)); +void cf_log_perr_cs(CONF_SECTION const *cs, char const *fmt, ...) CC_HINT(format (printf, 2, 3)); void cf_log_err_cp(CONF_PAIR const *cp, char const *fmt, ...) CC_HINT(format (printf, 2, 3)); +void cf_log_perr_cp(CONF_PAIR const *cp, char const *fmt, ...) CC_HINT(format (printf, 2, 3)); void cf_log_err_by_name(CONF_SECTION const *parent, char const *name, char const *fmt, ...) CC_HINT(format (printf, 3, 4)); void cf_log_warn_cp(CONF_PAIR const *cp, char const *fmt, ...) CC_HINT(format (printf, 2, 3)); diff --git a/src/main/conf_file.c b/src/main/conf_file.c index f8ee88fd0ce..d1de7a2fa59 100644 --- a/src/main/conf_file.c +++ b/src/main/conf_file.c @@ -4418,6 +4418,20 @@ void cf_log_err_cs(CONF_SECTION const *cs, char const *fmt, ...) buffer); } +void cf_log_perr_cs(CONF_SECTION const *cs, char const *fmt, ...) +{ + va_list ap; + char buffer[256]; + + va_start(ap, fmt); + vsnprintf(buffer, sizeof(buffer), fmt, ap); + va_end(ap); + + rad_assert(cs != NULL); + + PERROR("%s[%d]: %s", cs->item.filename, cs->item.lineno, buffer); +} + void cf_log_err_cp(CONF_PAIR const *cp, char const *fmt, ...) { va_list ap; @@ -4429,9 +4443,21 @@ void cf_log_err_cp(CONF_PAIR const *cp, char const *fmt, ...) rad_assert(cp != NULL); - ERROR("%s[%d]: %s", - cp->item.filename, cp->item.lineno, - buffer); + ERROR("%s[%d]: %s", cp->item.filename, cp->item.lineno, buffer); +} + +void cf_log_perr_cp(CONF_PAIR const *cp, char const *fmt, ...) +{ + va_list ap; + char buffer[256]; + + va_start(ap, fmt); + vsnprintf(buffer, sizeof(buffer), fmt, ap); + va_end(ap); + + rad_assert(cp != NULL); + + PERROR("%s[%d]: %s", cp->item.filename, cp->item.lineno, buffer); } void cf_log_err_by_name(CONF_SECTION const *parent, char const *name, char const *fmt, ...)