[systemd-commits] src/libsystemd-bus src/libsystemd-id128 src/login src/shared

Lennart Poettering lennart at kemper.freedesktop.org
Tue Dec 10 09:01:37 PST 2013


 src/libsystemd-bus/bus-control.c |    1 -
 src/libsystemd-id128/sd-id128.c  |    3 +--
 src/login/sd-login.c             |    2 +-
 src/shared/log.c                 |   15 ++++++++++-----
 src/shared/log.h                 |    6 ++++++
 src/shared/macro.h               |   10 ++++++----
 6 files changed, 24 insertions(+), 13 deletions(-)

New commits:
commit 80514f9c9bb86dbba761e4b026e5d62156ea112c
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Dec 10 17:01:10 2013 +0000

    macro: log assertion at debug level in assert_return()

diff --git a/src/libsystemd-bus/bus-control.c b/src/libsystemd-bus/bus-control.c
index 9663989..47e9111 100644
--- a/src/libsystemd-bus/bus-control.c
+++ b/src/libsystemd-bus/bus-control.c
@@ -27,7 +27,6 @@
 #include <errno.h>
 
 #include "strv.h"
-
 #include "sd-bus.h"
 #include "bus-internal.h"
 #include "bus-message.h"
diff --git a/src/libsystemd-id128/sd-id128.c b/src/libsystemd-id128/sd-id128.c
index 3fbad71..07d2415 100644
--- a/src/libsystemd-id128/sd-id128.c
+++ b/src/libsystemd-id128/sd-id128.c
@@ -23,10 +23,9 @@
 #include <fcntl.h>
 #include <unistd.h>
 
-#include "sd-id128.h"
-
 #include "util.h"
 #include "macro.h"
+#include "sd-id128.h"
 
 _public_ char *sd_id128_to_string(sd_id128_t id, char s[33]) {
         unsigned n;
diff --git a/src/login/sd-login.c b/src/login/sd-login.c
index 7ae3db0..c9a2e8a 100644
--- a/src/login/sd-login.c
+++ b/src/login/sd-login.c
@@ -28,10 +28,10 @@
 #include "util.h"
 #include "cgroup-util.h"
 #include "macro.h"
-#include "sd-login.h"
 #include "strv.h"
 #include "fileio.h"
 #include "login-shared.h"
+#include "sd-login.h"
 
 _public_ int sd_pid_get_session(pid_t pid, char **session) {
 
diff --git a/src/shared/log.c b/src/shared/log.c
index 8f4995a..2531e0d 100644
--- a/src/shared/log.c
+++ b/src/shared/log.c
@@ -687,7 +687,7 @@ int log_meta_object(
 
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wformat-nonliteral"
-_noreturn_ static void log_assert(const char *text, const char *file, int line, const char *func, const char *format) {
+static void log_assert(int level, const char *text, const char *file, int line, const char *func, const char *format) {
         static char buffer[LINE_MAX];
 
         snprintf(buffer, sizeof(buffer), format, text, file, line, func);
@@ -695,17 +695,22 @@ _noreturn_ static void log_assert(const char *text, const char *file, int line,
         char_array_0(buffer);
         log_abort_msg = buffer;
 
-        log_dispatch(LOG_CRIT, file, line, func, NULL, NULL, buffer);
-        abort();
+        log_dispatch(level, file, line, func, NULL, NULL, buffer);
 }
 #pragma GCC diagnostic pop
 
 _noreturn_ void log_assert_failed(const char *text, const char *file, int line, const char *func) {
-        log_assert(text, file, line, func, "Assertion '%s' failed at %s:%u, function %s(). Aborting.");
+        log_assert(LOG_CRIT, text, file, line, func, "Assertion '%s' failed at %s:%u, function %s(). Aborting.");
+        abort();
 }
 
 _noreturn_ void log_assert_failed_unreachable(const char *text, const char *file, int line, const char *func) {
-        log_assert(text, file, line, func, "Code should not be reached '%s' at %s:%u, function %s(). Aborting.");
+        log_assert(LOG_CRIT, text, file, line, func, "Code should not be reached '%s' at %s:%u, function %s(). Aborting.");
+        abort();
+}
+
+void log_assert_failed_return(const char *text, const char *file, int line, const char *func) {
+        log_assert(LOG_DEBUG, text, file, line, func, "Assertion '%s' failed at %s:%u, function %s(). Ignoring.");
 }
 
 int log_oom_internal(const char *file, int line, const char *func) {
diff --git a/src/shared/log.h b/src/shared/log.h
index 0dc5c26..de0e000 100644
--- a/src/shared/log.h
+++ b/src/shared/log.h
@@ -136,6 +136,12 @@ _noreturn_ void log_assert_failed_unreachable(
                 int line,
                 const char *func);
 
+void log_assert_failed_return(
+                const char *text,
+                const char *file,
+                int line,
+                const char *func);
+
 #define log_full(level, ...) \
 do { \
         if (log_get_max_level() >= (level)) \
diff --git a/src/shared/macro.h b/src/shared/macro.h
index 4198095..fd3762e 100644
--- a/src/shared/macro.h
+++ b/src/shared/macro.h
@@ -153,10 +153,12 @@ static inline size_t ALIGN_TO(size_t l, size_t ali) {
 #define assert_cc(expr) struct UNIQUE(_assert_struct_) { char x[(expr) ? 0 : -1]; };
 #endif
 
-#define assert_return(expr, r)                    \
-        do {                                      \
-                if (_unlikely_(!(expr)))          \
-                        return (r);               \
+#define assert_return(expr, r)                                          \
+        do {                                                            \
+                if (_unlikely_(!(expr))) {                              \
+                        log_assert_failed_return(#expr, __FILE__, __LINE__, __PRETTY_FUNCTION__); \
+                        return (r);                                     \
+                }                                                       \
         } while (false)
 
 #define PTR_TO_INT(p) ((int) ((intptr_t) (p)))



More information about the systemd-commits mailing list