summaryrefslogtreecommitdiff
path: root/lib/zassert.h
diff options
context:
space:
mode:
authorajs <ajs>2004-11-24 17:14:49 +0000
committerajs <ajs>2004-11-24 17:14:49 +0000
commitcee3df1e4b1b8103bf81e5281a46aab7881f93df (patch)
tree40d7cc8c22da9634739256a9d577b140b41730b8 /lib/zassert.h
parentb9e0ee31864c94c729fb6b6f6b2ccbc79dbcd474 (diff)
2004-11-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* zassert.h: New header file to declare a quagga-specific assert macro. * log.c: (_zlog_assert_failed) New function called when assert fails to log the error and abort. * zebra.h: Include "zassert.h" instead of <assert.h>. * regex.c: Include "zassert.h" instead of <assert.h>. * dict.c: Include "zassert.h" instead of <assert.h>.
Diffstat (limited to 'lib/zassert.h')
-rw-r--r--lib/zassert.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/zassert.h b/lib/zassert.h
new file mode 100644
index 00000000..77ebf5d3
--- /dev/null
+++ b/lib/zassert.h
@@ -0,0 +1,23 @@
+#ifndef _QUAGGA_ASSERT_H
+#define _QUAGGA_ASSERT_H
+
+extern void _zlog_assert_failed (const char *assertion, const char *file,
+ unsigned int line, const char *function)
+ __attribute__ ((noreturn));
+
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#define __ASSERT_FUNCTION __func__
+#elif defined(__GNUC__)
+#define __ASSERT_FUNCTION __FUNCTION__
+#else
+#define __ASSERT_FUNCTION NULL
+#endif
+
+#define zassert(EX) ((void)((EX) ? 0 : \
+ (_zlog_assert_failed(#EX, __FILE__, __LINE__, \
+ __ASSERT_FUNCTION), 0)))
+
+#undef assert
+#define assert(EX) zassert(EX)
+
+#endif /* _QUAGGA_ASSERT_H */