summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2013-12-10 17:01:10 +0000
committerLennart Poettering <lennart@poettering.net>2013-12-10 17:01:10 +0000
commit80514f9c9bb86dbba761e4b026e5d62156ea112c (patch)
tree2dd06a646831d5da062f73543e5ac3909ac5fd97 /src
parent6e8df5f00a3874decf1e5542da3d65b25f6da1dc (diff)
macro: log assertion at debug level in assert_return()
Diffstat (limited to 'src')
-rw-r--r--src/libsystemd-bus/bus-control.c1
-rw-r--r--src/libsystemd-id128/sd-id128.c3
-rw-r--r--src/login/sd-login.c2
-rw-r--r--src/shared/log.c15
-rw-r--r--src/shared/log.h6
-rw-r--r--src/shared/macro.h10
6 files changed, 24 insertions, 13 deletions
diff --git a/src/libsystemd-bus/bus-control.c b/src/libsystemd-bus/bus-control.c
index 966398944f..47e91118a4 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 3fbad71a52..07d241534e 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 7ae3db0397..c9a2e8a07f 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 8f4995a0c8..2531e0da03 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 0dc5c26100..de0e000371 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 4198095011..fd3762eed4 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)))