diff options
-rw-r--r-- | isisd/ChangeLog | 4 | ||||
-rw-r--r-- | isisd/dict.c | 6 | ||||
-rw-r--r-- | lib/ChangeLog | 8 | ||||
-rw-r--r-- | lib/log.c | 9 | ||||
-rw-r--r-- | lib/regex.c | 2 | ||||
-rw-r--r-- | lib/zassert.h | 23 | ||||
-rw-r--r-- | lib/zebra.h | 2 |
7 files changed, 49 insertions, 5 deletions
diff --git a/isisd/ChangeLog b/isisd/ChangeLog index f8d8d896..20be060a 100644 --- a/isisd/ChangeLog +++ b/isisd/ChangeLog @@ -1,3 +1,7 @@ +2004-11-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu> + + * dict.c: Include "zassert.h" instead of <assert.h>. + 2004-10-13 Hasso Tepper <hasso at quagga.net> * isis_main.c: Initialize access list. Although we haven't route diff --git a/isisd/dict.c b/isisd/dict.c index 86206a3b..784ec842 100644 --- a/isisd/dict.c +++ b/isisd/dict.c @@ -14,19 +14,19 @@ * into proprietary software; there is no requirement for such software to * contain a copyright notice related to this source. * - * $Id: dict.c,v 1.2 2004/09/10 20:48:21 hasso Exp $ + * $Id: dict.c,v 1.3 2004/11/24 17:14:49 ajs Exp $ * $Name: $ */ #include <stdlib.h> #include <stddef.h> -#include <assert.h> +#include "zassert.h" #define DICT_IMPLEMENTATION #include "dict.h" #ifdef KAZLIB_RCSID static const char rcsid[] = - "$Id: dict.c,v 1.2 2004/09/10 20:48:21 hasso Exp $"; + "$Id: dict.c,v 1.3 2004/11/24 17:14:49 ajs Exp $"; #endif /* diff --git a/lib/ChangeLog b/lib/ChangeLog index 10092d1c..6ba1d6f4 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,11 @@ +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>. + 2004-11-23 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * sigevent.c: (signal_init) Set up some default signal handlers @@ -315,6 +315,15 @@ PLOG_FUNC(plog_debug, LOG_DEBUG) #undef PLOG_FUNC +void +_zlog_assert_failed (const char *assertion, const char *file, + unsigned int line, const char *function) +{ + zlog_err("Assertion `%s' failed in file %s, line %u, function %s", + assertion,file,line,(function ? function : "?")); + abort(); +} + /* Open log stream */ struct zlog * diff --git a/lib/regex.c b/lib/regex.c index 2eb7c118..2f90dded 100644 --- a/lib/regex.c +++ b/lib/regex.c @@ -613,7 +613,7 @@ extract_number_and_incr (destination, source) # include <stdio.h> /* It is useful to test things that ``must'' be true when debugging. */ -# include <assert.h> +# include "zassert.h" static int debug; 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 */ diff --git a/lib/zebra.h b/lib/zebra.h index f2c396d8..5d0e2385 100644 --- a/lib/zebra.h +++ b/lib/zebra.h @@ -95,7 +95,7 @@ typedef int socklen_t; /* misc include group */ #include <stdarg.h> -#include <assert.h> +#include "zassert.h" #ifdef HAVE_LCAPS #include <sys/capability.h> |