diff --git a/include/assert.h b/include/assert.h index dbd33497..fa6c86f1 100644 --- a/include/assert.h +++ b/include/assert.h @@ -1,6 +1,6 @@ /* -*-comment-start: "//";comment-end:""-*- * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen + * Copyright © 2017,2022 Jan (janneke) Nieuwenhuizen * * This file is part of GNU Mes. * @@ -27,8 +27,9 @@ #undef __MES_ASSERT_H #include_next #else // ! SYSTEM_LIBC -#define assert(x) ((x) ? (void)0 : __assert_fail (#x)) -void __assert_fail (char *s); +#define assert(x) ((x) ? (void)0 : __assert_fail (#x, 0, 0, 0)) +void __assert_fail (char const *s, char const *file, unsigned line, + char const *function); #endif // ! SYSTEM_LIBC #endif // __MES_ASSERT_H diff --git a/include/mes/lib.h b/include/mes/lib.h index 549cca1d..ceb2fb48 100644 --- a/include/mes/lib.h +++ b/include/mes/lib.h @@ -67,7 +67,8 @@ extern void (*__call_at_exit) (void); #define __FILEDES_MAX 512 #if !SYSTEM_LIBC -void __assert_fail (char *s); +void __assert_fail (char const *s, char const *file, unsigned line, + char const *function); ssize_t __buffered_read (int filedes, void *buffer, size_t size); size_t __buffered_read_clear (int filedes); void _exit (int code); diff --git a/lib/mes/__assert_fail.c b/lib/mes/__assert_fail.c index c4dda5c7..eb5d0c85 100644 --- a/lib/mes/__assert_fail.c +++ b/lib/mes/__assert_fail.c @@ -1,6 +1,6 @@ /* -*-comment-start: "//";comment-end:""-*- * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen + * Copyright © 2016,2017,2018,2019,2022 Jan (janneke) Nieuwenhuizen * * This file is part of GNU Mes. * @@ -19,14 +19,30 @@ */ #include +#include void -__assert_fail (char *s) +__assert_fail (char const *msg, char const *file, unsigned line, + char const *function) { + if (file && file[0]) + { + eputs (file); + eputs (":"); + } + if (line) + { + eputs (itoa (line)); + eputs (":"); + } + if (function && function[0]) + { + eputs (function); + eputs (":"); + } eputs ("assert fail: "); - eputs (s); + eputs (msg); eputs ("\n"); - char *fail = s; - fail = 0; + char *fail = 0; fail[0] = 0; } diff --git a/lib/mes/assert_msg.c b/lib/mes/assert_msg.c index 191aa87c..93000be6 100644 --- a/lib/mes/assert_msg.c +++ b/lib/mes/assert_msg.c @@ -1,7 +1,7 @@ /* -*-comment-start: "//";comment-end:""-*- * GNU Mes --- Maxwell Equations of Software * Copyright © 2019 Jeremiah Orians - * Copyright © 2019 Jan (janneke) Nieuwenhuizen + * Copyright © 2019,2022 Jan (janneke) Nieuwenhuizen * * This file is part of GNU Mes. * @@ -20,11 +20,12 @@ */ #include +#include #include void assert_msg (int bool, char *msg) { if (bool == 0) - __assert_fail (msg); + __assert_fail (msg, 0, 0, 0); }