#if !defined(LINT) && !defined(CODECENTER)
static const char rcsid[] = "$Id: assertions.c,v 1.1.206.1 2004/03/09 08:33:39 marka Exp $";
#endif
#include "port_before.h"
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <isc/assertions.h>
#include "port_after.h"
static void default_assertion_failed(const char *, int, assertion_type,
const char *, int);
assertion_failure_callback __assertion_failed = default_assertion_failed;
void
set_assertion_failure_callback(assertion_failure_callback f) {
if (f == NULL)
__assertion_failed = default_assertion_failed;
else
__assertion_failed = f;
}
const char *
assertion_type_to_text(assertion_type type) {
const char *result;
switch (type) {
case assert_require:
result = "REQUIRE";
break;
case assert_ensure:
result = "ENSURE";
break;
case assert_insist:
result = "INSIST";
break;
case assert_invariant:
result = "INVARIANT";
break;
default:
result = NULL;
}
return (result);
}
static void
default_assertion_failed(const char *file, int line, assertion_type type,
const char *cond, int print_errno)
{
fprintf(stderr, "%s:%d: %s(%s)%s%s failed.\n",
file, line, assertion_type_to_text(type), cond,
(print_errno) ? ": " : "",
(print_errno) ? strerror(errno) : "");
abort();
}