]> err.no Git - varnish/commitdiff
Make the backend function of libvarnish' assert facilities pluggable.
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sun, 20 Jul 2008 10:03:42 +0000 (10:03 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sun, 20 Jul 2008 10:03:42 +0000 (10:03 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@2970 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/include/libvarnish.h
varnish-cache/lib/libvarnish/assert.c

index e68d21a32c65953f91e0edfed5e7a43292486cb9..15acdc6897a079cb7ce082bb8d01eace087af9e7 100644 (file)
@@ -72,25 +72,26 @@ int vtmpfile(char *);
  *     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)
index b9ea7399b03a3e88464a4b9ca8283885ae3c079d..405548a7df0a07a2b9103625fb7c56ac948220a9 100644 (file)
@@ -27,6 +27,8 @@
  * SUCH DAMAGE.
  *
  * $Id$
+ *
+ * This is the default backend function for libvarnish' assert facilities.
  */
 
 #include "config.h"
 
 #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;