r2970 - in trunk/varnish-cache: include lib/libvarnish

phk at projects.linpro.no phk at projects.linpro.no
Sun Jul 20 12:03:42 CEST 2008


Author: phk
Date: 2008-07-20 12:03:42 +0200 (Sun, 20 Jul 2008)
New Revision: 2970

Modified:
   trunk/varnish-cache/include/libvarnish.h
   trunk/varnish-cache/lib/libvarnish/assert.c
Log:
Make the backend function of libvarnish' assert facilities pluggable.



Modified: trunk/varnish-cache/include/libvarnish.h
===================================================================
--- trunk/varnish-cache/include/libvarnish.h	2008-07-20 09:57:25 UTC (rev 2969)
+++ trunk/varnish-cache/include/libvarnish.h	2008-07-20 10:03:42 UTC (rev 2970)
@@ -72,25 +72,26 @@
  *	handle gracefully, such as malloc failure.
  */
 
+typedef void lbv_assert_f(const char *, const char *, int, const char *, int, int);
+
+extern lbv_assert_f *lbv_assert;
+
 #ifdef WITHOUT_ASSERTS
 #define assert(e)	((void)(e))
 #else /* WITH_ASSERTS */
 #define assert(e)							\
 do { 									\
 	if (!(e))							\
-		lbv_assert(__func__, __FILE__, __LINE__, #e, errno);	\
+		lbv_assert(__func__, __FILE__, __LINE__, #e, errno, 0);	\
 } while (0)
 #endif
 
 #define xxxassert(e)							\
 do { 									\
 	if (!(e))							\
-		lbv_xxxassert(__func__, __FILE__, __LINE__, #e, errno); \
+		lbv_assert(__func__, __FILE__, __LINE__, #e, errno, 1); \
 } while (0)
 
-void lbv_assert(const char *, const char *, int, const char *, int);
-void lbv_xxxassert(const char *, const char *, int, const char *, int);
-
 /* Assert zero return value */
 #define AZ(foo)	do { assert((foo) == 0); } while (0)
 #define AN(foo)	do { assert((foo) != 0); } while (0)

Modified: trunk/varnish-cache/lib/libvarnish/assert.c
===================================================================
--- trunk/varnish-cache/lib/libvarnish/assert.c	2008-07-20 09:57:25 UTC (rev 2969)
+++ trunk/varnish-cache/lib/libvarnish/assert.c	2008-07-20 10:03:42 UTC (rev 2970)
@@ -27,6 +27,8 @@
  * SUCH DAMAGE.
  *
  * $Id$
+ *
+ * This is the default backend function for libvarnish' assert facilities.
  */
 
 #include "config.h"
@@ -37,30 +39,25 @@
 
 #include "libvarnish.h"
 
-void
-lbv_xxxassert(const char *func, const char *file, int line, const char *cond, int err)
+static void
+lbv_assert_default(const char *func, const char *file, int line, const char *cond, int err, int xxx)
 {
 
-	fprintf(stderr,
-	    "Missing errorhandling code in %s(), %s line %d:\n"
-	    "  Condition(%s) not true.\n",
-	    func, file, line, cond);
-	if (err)
+	if (xxx) {
 		fprintf(stderr,
-		    "  errno = %d (%s)\n", err, strerror(err));
-	abort();
-}
-
-void
-lbv_assert(const char *func, const char *file, int line, const char *cond, int err)
-{
-
-	fprintf(stderr,
-	    "Assert error in %s(), %s line %d:\n"
-	    "  Condition(%s) not true.\n",
-	    func, file, line, cond);
+		    "Missing errorhandling code in %s(), %s line %d:\n"
+		    "  Condition(%s) not true.\n",
+		    func, file, line, cond);
+	} else {
+		fprintf(stderr,
+		    "Assert error in %s(), %s line %d:\n"
+		    "  Condition(%s) not true.\n",
+		    func, file, line, cond);
+	}
 	if (err)
 		fprintf(stderr,
 		    "  errno = %d (%s)\n", err, strerror(err));
 	abort();
 }
+
+lbv_assert_f *lbv_assert = lbv_assert_default;




More information about the varnish-commit mailing list