diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-04-16 08:45:28 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-04-16 08:46:51 +0900 |
commit | 5b098203fdb92e1ba5a3c837a558de4515358ba7 (patch) | |
tree | c9ec8e58f079707236040241c56776930fb2cbfb | |
parent | ac513634961651f69885e0b93de2bf43abe5d886 (diff) | |
download | systemd-5b098203fdb92e1ba5a3c837a558de4515358ba7.tar.gz |
timedate: make log_unit_xxx_errno() refuse zero errno
-rw-r--r-- | src/timedate/timedated.c | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index 452c38e0de..6e0f91dec4 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -65,24 +65,33 @@ typedef struct Context { LIST_HEAD(UnitStatusInfo, units); } Context; -#define log_unit_full(unit, level, error, ...) \ +#define log_unit_full_errno_zerook(unit, level, error, ...) \ ({ \ const UnitStatusInfo *_u = (unit); \ - log_object_internal(level, error, PROJECT_FILE, __LINE__, __func__, \ - "UNIT=", _u->name, NULL, NULL, ##__VA_ARGS__); \ + _u ? log_object_internal(level, error, PROJECT_FILE, __LINE__, __func__, "UNIT=", _u->name, NULL, NULL, ##__VA_ARGS__) : \ + log_internal(level, error, PROJECT_FILE, __LINE__, __func__, ##__VA_ARGS__); \ }) -#define log_unit_debug(unit, ...) log_unit_full(unit, LOG_DEBUG, 0, ##__VA_ARGS__) -#define log_unit_info(unit, ...) log_unit_full(unit, LOG_INFO, 0, ##__VA_ARGS__) -#define log_unit_notice(unit, ...) log_unit_full(unit, LOG_NOTICE, 0, ##__VA_ARGS__) -#define log_unit_warning(unit, ...) log_unit_full(unit, LOG_WARNING, 0, ##__VA_ARGS__) -#define log_unit_error(unit, ...) log_unit_full(unit, LOG_ERR, 0, ##__VA_ARGS__) +#define log_unit_full_errno(unit, level, error, ...) \ + ({ \ + int _error = (error); \ + ASSERT_NON_ZERO(_error); \ + log_unit_full_errno_zerook(unit, level, _error, ##__VA_ARGS__); \ + }) + +#define log_unit_full(unit, level, ...) (void) log_unit_full_errno_zerook(unit, level, 0, ##__VA_ARGS__) + +#define log_unit_debug(unit, ...) log_unit_full(unit, LOG_DEBUG, ##__VA_ARGS__) +#define log_unit_info(unit, ...) log_unit_full(unit, LOG_INFO, ##__VA_ARGS__) +#define log_unit_notice(unit, ...) log_unit_full(unit, LOG_NOTICE, ##__VA_ARGS__) +#define log_unit_warning(unit, ...) log_unit_full(unit, LOG_WARNING, ##__VA_ARGS__) +#define log_unit_error(unit, ...) log_unit_full(unit, LOG_ERR, ##__VA_ARGS__) -#define log_unit_debug_errno(unit, error, ...) log_unit_full(unit, LOG_DEBUG, error, ##__VA_ARGS__) -#define log_unit_info_errno(unit, error, ...) log_unit_full(unit, LOG_INFO, error, ##__VA_ARGS__) -#define log_unit_notice_errno(unit, error, ...) log_unit_full(unit, LOG_NOTICE, error, ##__VA_ARGS__) -#define log_unit_warning_errno(unit, error, ...) log_unit_full(unit, LOG_WARNING, error, ##__VA_ARGS__) -#define log_unit_error_errno(unit, error, ...) log_unit_full(unit, LOG_ERR, error, ##__VA_ARGS__) +#define log_unit_debug_errno(unit, error, ...) log_unit_full_errno(unit, LOG_DEBUG, error, ##__VA_ARGS__) +#define log_unit_info_errno(unit, error, ...) log_unit_full_errno(unit, LOG_INFO, error, ##__VA_ARGS__) +#define log_unit_notice_errno(unit, error, ...) log_unit_full_errno(unit, LOG_NOTICE, error, ##__VA_ARGS__) +#define log_unit_warning_errno(unit, error, ...) log_unit_full_errno(unit, LOG_WARNING, error, ##__VA_ARGS__) +#define log_unit_error_errno(unit, error, ...) log_unit_full_errno(unit, LOG_ERR, error, ##__VA_ARGS__) static void unit_status_info_clear(UnitStatusInfo *p) { assert(p); @@ -485,8 +494,8 @@ static int unit_start_or_stop(UnitStatusInfo *u, sd_bus *bus, sd_bus_error *erro "ss", u->name, "replace"); - log_unit_full(u, r < 0 ? LOG_WARNING : LOG_DEBUG, r, - "%s unit: %m", start ? "Starting" : "Stopping"); + log_unit_full_errno_zerook(u, r < 0 ? LOG_WARNING : LOG_DEBUG, r, + "%s unit: %m", start ? "Starting" : "Stopping"); if (r < 0) return r; |