diff --git a/src/basic/log.c b/src/basic/log.c index 0486027296..84621932db 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -1223,7 +1223,7 @@ int log_syntax_internal( log_target == LOG_TARGET_NULL) return -ERRNO_VALUE(error); - errno = error; + errno = ERRNO_VALUE(error); va_start(ap, format); (void) vsnprintf(buffer, sizeof buffer, format, ap); diff --git a/src/basic/log.h b/src/basic/log.h index 17438d7ff7..113e0dedee 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -308,7 +308,7 @@ int log_syntax_invalid_utf8_internal( int _level = (level), _e = (error); \ (log_get_max_level() >= LOG_PRI(_level)) \ ? log_syntax_internal(unit, _level, config_file, config_line, _e, __FILE__, __LINE__, __func__, __VA_ARGS__) \ - : -abs(_e); \ + : -ERRNO_VALUE(_e); \ }) #define log_syntax_invalid_utf8(unit, level, config_file, config_line, rvalue) \ diff --git a/src/test/test-log.c b/src/test/test-log.c index 1e010c08fb..18ef56ac39 100644 --- a/src/test/test-log.c +++ b/src/test/test-log.c @@ -59,15 +59,22 @@ static void test_long_lines(void) { "asdfasdf %s asdfasdfa", "foobar"); } +static void test_log_syntax(void) { + assert_se(log_syntax("unit", LOG_ERR, "filename", 10, EINVAL, "EINVAL: %s: %m", "hogehoge") == -EINVAL); + assert_se(log_syntax("unit", LOG_ERR, "filename", 10, -ENOENT, "ENOENT: %s: %m", "hogehoge") == -ENOENT); + assert_se(log_syntax("unit", LOG_ERR, "filename", 10, SYNTHETIC_ERRNO(ENOTTY), "ENOTTY: %s: %m", "hogehoge") == -ENOTTY); +} + int main(int argc, char* argv[]) { int target; - for (target = 0; target < _LOG_TARGET_MAX; target++) { + for (target = 0; target < _LOG_TARGET_MAX; target++) { log_set_target(target); log_open(); test_log_struct(); test_long_lines(); + test_log_syntax(); } assert_se(log_info_errno(SYNTHETIC_ERRNO(EUCLEAN), "foo") == -EUCLEAN);