X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Flog.c;fp=src%2Flog.c;h=f65e8d1006d0c9a0b155e85c70e9a0e3853cfc43;hb=b7f336383dc8ba58f720adb4c1d218348bf57e54;hp=04e90eb20f02239d45441264c07181003a6efce4;hpb=2b7dec8661029fd531b3818ca5a5470fa038751c;p=elogind.git diff --git a/src/log.c b/src/log.c index 04e90eb20..f65e8d100 100644 --- a/src/log.c +++ b/src/log.c @@ -618,18 +618,13 @@ int log_meta( return r; } -void log_assert( - const char*file, - int line, - const char *func, - const char *format, ...) { - +_noreturn_ static void log_assert(const char *text, const char *file, int line, const char *func, const char *format) { static char buffer[LINE_MAX]; - va_list ap; - va_start(ap, format); - vsnprintf(buffer, sizeof(buffer), format, ap); - va_end(ap); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-nonliteral" + snprintf(buffer, sizeof(buffer), format, text, file, line, func); +#pragma GCC diagnostic pop char_array_0(buffer); log_abort_msg = buffer; @@ -638,6 +633,14 @@ void log_assert( abort(); } +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."); +} + +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."); +} + int log_set_target_from_string(const char *e) { LogTarget t;