X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flog.c;h=1a6ea7e5a84fbb2b97303f2b2775ce4e62bfde80;hb=131a4dcfd4375f235a1f512339c0909e8bcc730b;hp=04e90eb20f02239d45441264c07181003a6efce4;hpb=2b7dec8661029fd531b3818ca5a5470fa038751c;p=elogind.git diff --git a/src/log.c b/src/log.c index 04e90eb20..1a6ea7e5a 100644 --- a/src/log.c +++ b/src/log.c @@ -618,18 +618,12 @@ int log_meta( return r; } -void log_assert( - const char*file, - int line, - const char *func, - const char *format, ...) { - +#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 char buffer[LINE_MAX]; - va_list ap; - va_start(ap, format); - vsnprintf(buffer, sizeof(buffer), format, ap); - va_end(ap); + snprintf(buffer, sizeof(buffer), format, text, file, line, func); char_array_0(buffer); log_abort_msg = buffer; @@ -637,6 +631,15 @@ void log_assert( log_dispatch(LOG_CRIT, file, line, func, buffer); abort(); } +#pragma GCC diagnostic pop + +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;