From: Yu Watanabe Date: Thu, 22 Aug 2024 23:07:12 +0000 (+0900) Subject: conf-parser: introduce log_section_full_errno() and friends X-Git-Tag: v257-rc1~634^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=75f59c6ea5014ad17309c40260df4cf171e32efc;p=thirdparty%2Fsystemd.git conf-parser: introduce log_section_full_errno() and friends --- diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h index f1860db4485..b73039cc5c8 100644 --- a/src/shared/conf-parser.h +++ b/src/shared/conf-parser.h @@ -203,6 +203,43 @@ static inline bool section_is_invalid(ConfigSection *section) { DEFINE_TRIVIAL_CLEANUP_FUNC(type*, free_func); \ DEFINE_TRIVIAL_CLEANUP_FUNC(type*, free_func##_or_set_invalid); +#define log_section_full_errno_zerook(section, level, error, ...) \ + ({ \ + const ConfigSection *_s = (section); \ + log_syntax(/* unit = */ NULL, \ + level, \ + _s ? _s->filename : NULL, \ + _s ? _s->line : 0, \ + error, \ + __VA_ARGS__); \ + }) + +#define log_section_full_errno(section, level, error, ...) \ + ({ \ + int _error = (error); \ + ASSERT_NON_ZERO(_error); \ + log_section_full_errno_zerook(section, level, _error, __VA_ARGS__); \ + }) + +#define log_section_full(section, level, fmt, ...) \ + ({ \ + if (BUILD_MODE_DEVELOPER) \ + assert(!strstr(fmt, "%m")); \ + (void) log_section_full_errno_zerook(section, level, 0, fmt, ##__VA_ARGS__); \ + }) + +#define log_section_debug(section, ...) log_section_full(section, LOG_DEBUG, __VA_ARGS__) +#define log_section_info(section, ...) log_section_full(section, LOG_INFO, __VA_ARGS__) +#define log_section_notice(section, ...) log_section_full(section, LOG_NOTICE, __VA_ARGS__) +#define log_section_warning(section, ...) log_section_full(section, LOG_WARNING, __VA_ARGS__) +#define log_section_error(section, ...) log_section_full(section, LOG_ERR, __VA_ARGS__) + +#define log_section_debug_errno(section, error, ...) log_section_full_errno(section, LOG_DEBUG, error, __VA_ARGS__) +#define log_section_info_errno(section, error, ...) log_section_full_errno(section, LOG_INFO, error, __VA_ARGS__) +#define log_section_notice_errno(section, error, ...) log_section_full_errno(section, LOG_NOTICE, error, __VA_ARGS__) +#define log_section_warning_errno(section, error, ...) log_section_full_errno(section, LOG_WARNING, error, __VA_ARGS__) +#define log_section_error_errno(section, error, ...) log_section_full_errno(section, LOG_ERR, error, __VA_ARGS__) + CONFIG_PARSER_PROTOTYPE(config_parse_int); CONFIG_PARSER_PROTOTYPE(config_parse_unsigned); CONFIG_PARSER_PROTOTYPE(config_parse_long);