From: Zbigniew Jędrzejewski-Szmek Date: Thu, 20 Apr 2017 18:09:47 +0000 (-0400) Subject: basic/log: fix _printf_ annotation on log_object_internalv X-Git-Tag: chiark/234.4-1+devuan1.1+iwj1~161 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=7c3d5fdca2113db4a26c585061ee8ed1b159dd73 basic/log: fix _printf_ annotation on log_object_internalv Fixup for 4b58153dd22172d817055d2a09a0cdf3f4bd9db3. I saw this because of a clang warning. With gcc the -Wformat-nonliteral warning doesn't seem to work as expected. In two places, a string constructed with strjoina is used as the pattern. This is safe, because we're taking a pattern which was already marked with _printf_ and prepending a known value to it. Those places are marked with #pragma to silence the warning. --- diff --git a/src/basic/log.h b/src/basic/log.h index 69e40c16b..b232fe1fc 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -31,16 +31,6 @@ #include "macro.h" -typedef enum LogRealm { - LOG_REALM_SYSTEMD, - LOG_REALM_UDEV, - _LOG_REALM_MAX, -} LogRealm; - -#ifndef LOG_REALM -# define LOG_REALM LOG_REALM_SYSTEMD -#endif - typedef enum LogTarget{ LOG_TARGET_CONSOLE, LOG_TARGET_CONSOLE_PREFIXED, @@ -54,24 +44,14 @@ typedef enum LogTarget{ LOG_TARGET_NULL, _LOG_TARGET_MAX, _LOG_TARGET_INVALID = -1 -} LogTarget; - -#define LOG_REALM_PLUS_LEVEL(realm, level) \ - ((realm) << 10 | (level)) -#define LOG_REALM_REMOVE_LEVEL(realm_level) \ - ((realm_level >> 10)) +} LogTarget; void log_set_target(LogTarget target); -void log_set_max_level_realm(LogRealm realm, int level); -#define log_set_max_level(level) \ - log_set_max_level_realm(LOG_REALM, (level)) - +void log_set_max_level(int level); void log_set_facility(int facility); int log_set_target_from_string(const char *e); -int log_set_max_level_from_string_realm(LogRealm realm, const char *e); -#define log_set_max_level_from_string(e) \ - log_set_max_level_from_string_realm(LOG_REALM, (e)) +int log_set_max_level_from_string(const char *e); void log_show_color(bool b); bool log_get_show_color(void) _pure_; @@ -82,9 +62,7 @@ int log_show_color_from_string(const char *e); int log_show_location_from_string(const char *e); LogTarget log_get_target(void) _pure_; -int log_get_max_level_realm(LogRealm realm) _pure_; -#define log_get_max_level() \ - log_get_max_level_realm(LOG_REALM) +int log_get_max_level(void) _pure_; int log_open(void); void log_close(void); @@ -97,33 +75,17 @@ void log_close_journal(void); void log_close_kmsg(void); void log_close_console(void); -void log_parse_environment_realm(LogRealm realm); -#define log_parse_environment() \ - log_parse_environment_realm(LOG_REALM) - -int log_dispatch_internal( - int level, - int error, - const char *file, - int line, - const char *func, - const char *object_field, - const char *object, - const char *extra, - const char *extra_field, - char *buffer); +void log_parse_environment(void); -int log_internal_realm( +int log_internal( int level, int error, const char *file, int line, const char *func, const char *format, ...) _printf_(6,7); -#define log_internal(level, ...) \ - log_internal_realm(LOG_REALM_PLUS_LEVEL(LOG_REALM, (level)), __VA_ARGS__) -int log_internalv_realm( +int log_internalv( int level, int error, const char *file, @@ -131,10 +93,7 @@ int log_internalv_realm( const char *func, const char *format, va_list ap) _printf_(6,0); -#define log_internalv(level, ...) \ - log_internalv_realm(LOG_REALM_PLUS_LEVEL(LOG_REALM, (level)), __VA_ARGS__) -/* Realm is fixed to LOG_REALM_SYSTEMD for those */ int log_object_internal( int level, int error, @@ -169,7 +128,6 @@ int log_struct_internal( const char *format, ...) _printf_(6,0) _sentinel_; int log_oom_internal( - LogRealm realm, const char *file, int line, const char *func); @@ -181,7 +139,7 @@ int log_format_iovec( bool newline_separator, int error, const char *format, - va_list ap) _printf_(6, 0); + va_list ap); /* This modifies the buffer passed! */ int log_dump_internal( @@ -193,50 +151,34 @@ int log_dump_internal( char *buffer); /* Logging for various assertions */ -noreturn void log_assert_failed_realm( - LogRealm realm, +noreturn void log_assert_failed( const char *text, const char *file, int line, const char *func); -#define log_assert_failed(text, ...) \ - log_assert_failed_realm(LOG_REALM, (text), __VA_ARGS__) -noreturn void log_assert_failed_unreachable_realm( - LogRealm realm, +noreturn void log_assert_failed_unreachable( const char *text, const char *file, int line, const char *func); -#define log_assert_failed_unreachable(text, ...) \ - log_assert_failed_unreachable_realm(LOG_REALM, (text), __VA_ARGS__) -void log_assert_failed_return_realm( - LogRealm realm, +void log_assert_failed_return( const char *text, const char *file, int line, const char *func); -#define log_assert_failed_return(text, ...) \ - log_assert_failed_return_realm(LOG_REALM, (text), __VA_ARGS__) - -#define log_dispatch(level, error, buffer) \ - log_dispatch_internal(level, error, __FILE__, __LINE__, __func__, NULL, NULL, NULL, NULL, buffer) /* Logging with level */ -#define log_full_errno_realm(realm, level, error, ...) \ +#define log_full_errno(level, error, ...) \ ({ \ int _level = (level), _e = (error); \ - (log_get_max_level_realm((realm)) >= LOG_PRI(_level)) \ - ? log_internal_realm(LOG_REALM_PLUS_LEVEL((realm), _level), _e, \ - __FILE__, __LINE__, __func__, __VA_ARGS__) \ + (log_get_max_level() >= LOG_PRI(_level)) \ + ? log_internal(_level, _e, __FILE__, __LINE__, __func__, __VA_ARGS__) \ : -abs(_e); \ }) -#define log_full_errno(level, error, ...) \ - log_full_errno_realm(LOG_REALM, (level), (error), __VA_ARGS__) - -#define log_full(level, ...) log_full_errno((level), 0, __VA_ARGS__) +#define log_full(level, ...) log_full_errno(level, 0, __VA_ARGS__) /* Normal logging */ #define log_debug(...) log_full(LOG_DEBUG, __VA_ARGS__) @@ -266,17 +208,13 @@ void log_assert_failed_return_realm( # define log_debug_elogind(...) do {} while (0) #endif // ENABLE_DEBUG_ELOGIND /* Structured logging */ -#define log_struct_errno(level, error, ...) \ - log_struct_internal(LOG_REALM_PLUS_LEVEL(LOG_REALM, level), \ - error, __FILE__, __LINE__, __func__, __VA_ARGS__) -#define log_struct(level, ...) log_struct_errno(level, 0, __VA_ARGS__) +#define log_struct(level, ...) log_struct_internal(level, 0, __FILE__, __LINE__, __func__, __VA_ARGS__) +#define log_struct_errno(level, error, ...) log_struct_internal(level, error, __FILE__, __LINE__, __func__, __VA_ARGS__) /* This modifies the buffer passed! */ -#define log_dump(level, buffer) \ - log_dump_internal(LOG_REALM_PLUS_LEVEL(LOG_REALM, level), \ - 0, __FILE__, __LINE__, __func__, buffer) +#define log_dump(level, buffer) log_dump_internal(level, 0, __FILE__, __LINE__, __func__, buffer) -#define log_oom() log_oom_internal(LOG_REALM, __FILE__, __LINE__, __func__) +#define log_oom() log_oom_internal(__FILE__, __LINE__, __func__) bool log_on_console(void) _pure_;