#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)assert.c 8.1 (Berkeley) 6/4/93";
#endif
#include <sys/cdefs.h>
__FBSDID("$FreeBSD: src/lib/libc/gen/assert.c,v 1.8 2007/01/09 00:27:53 imp Exp $");
#include <assert.h>
#include <stdlib.h>
#include <unistd.h>
#if __has_include(<CrashReporterClient.h>)
#include <CrashReporterClient.h>
#else
#define CRGetCrashLogMessage() NULL
#define CRSetCrashLogMessage(...)
#endif
#include "_simple.h"
void
__assert_rtn(func, file, line, failedexpr)
const char *func, *file;
int line;
const char *failedexpr;
{
if (func == (const char *)-1L) {
_simple_dprintf(STDERR_FILENO,
"%s:%d: failed assertion `%s'\n", file, line, failedexpr);
if (!CRGetCrashLogMessage()) {
_SIMPLE_STRING s = _simple_salloc();
if (s) {
_simple_sprintf(s,
"%s:%d: failed assertion `%s'\n",
file, line, failedexpr);
CRSetCrashLogMessage(_simple_string(s));
} else
CRSetCrashLogMessage(failedexpr);
}
} else if (func == NULL) {
_simple_dprintf(STDERR_FILENO,
"Assertion failed: (%s), file %s, line %d.\n", failedexpr,
file, line);
if (!CRGetCrashLogMessage()) {
_SIMPLE_STRING s = _simple_salloc();
if (s) {
_simple_sprintf(s,
"Assertion failed: (%s), file %s, line %d.\n",
failedexpr, file, line);
CRSetCrashLogMessage(_simple_string(s));
} else
CRSetCrashLogMessage(failedexpr);
}
} else {
_simple_dprintf(STDERR_FILENO,
"Assertion failed: (%s), function %s, file %s, line %d.\n",
failedexpr, func, file, line);
if (!CRGetCrashLogMessage()) {
_SIMPLE_STRING s = _simple_salloc();
if (s) {
_simple_sprintf(s,
"Assertion failed: (%s), function %s, file %s, line %d.\n",
failedexpr, func, file, line);
CRSetCrashLogMessage(_simple_string(s));
} else
CRSetCrashLogMessage(failedexpr);
}
}
abort();
}