summaryrefslogtreecommitdiff
path: root/libc/stdlib/assert.c
diff options
context:
space:
mode:
authorProjectRevoTPP <projectrevotpp@hotmail.com>2017-12-20 16:34:35 -0500
committerProjectRevoTPP <projectrevotpp@hotmail.com>2017-12-20 16:34:35 -0500
commit48ef7704c03e7e554c05de01bf8d1d70c16cb6f4 (patch)
tree34d52513de6c903b4f52ef87d885c73472daf469 /libc/stdlib/assert.c
parentf49e7cbb33e6e27b0ce5eb35244d7241c800a7c1 (diff)
add libc building to agbcc.
Diffstat (limited to 'libc/stdlib/assert.c')
-rw-r--r--libc/stdlib/assert.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/libc/stdlib/assert.c b/libc/stdlib/assert.c
new file mode 100644
index 0000000..5b08bba
--- /dev/null
+++ b/libc/stdlib/assert.c
@@ -0,0 +1,62 @@
+/*
+FUNCTION
+<<assert>>---Macro for Debugging Diagnostics
+
+INDEX
+ assert
+
+ANSI_SYNOPSIS
+ #include <assert.h>
+ void assert(int <[expression]>);
+
+TRAD_SYNOPSIS
+ #include <assert.h>
+ assert(<[expression]>)
+ int <[expression]>;
+
+DESCRIPTION
+ Use this macro to embed debuggging diagnostic statements in
+ your programs. The argument <[expression]> should be an
+ expression which evaluates to true (nonzero) when your program
+ is working as you intended.
+
+ When <[expression]> evaluates to false (zero), <<assert>>
+ calls <<abort>>, after first printing a message showing what
+ failed and where:
+
+. Assertion failed: <[expression]>, file <[filename]>, line <[lineno]>
+
+ The macro is defined to permit you to turn off all uses of
+ <<assert>> at compile time by defining <<NDEBUG>> as a
+ preprocessor variable. If you do this, the <<assert>> macro
+ expands to
+
+. (void(0))
+
+RETURNS
+ <<assert>> does not return a value.
+
+PORTABILITY
+ The <<assert>> macro is required by ANSI, as is the behavior
+ when <<NDEBUG>> is defined.
+
+Supporting OS subroutines required (only if enabled): <<close>>, <<fstat>>,
+<<getpid>>, <<isatty>>, <<kill>>, <<lseek>>, <<read>>, <<sbrk>>, <<write>>.
+*/
+
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+void
+_DEFUN (__assert, (file, line, failedexpr),
+ const char *file _AND
+ int line _AND
+ const char *failedexpr)
+{
+ (void)fiprintf(stderr,
+ "assertion \"%s\" failed: file \"%s\", line %d\n",
+ failedexpr, file, line);
+ abort();
+ /* NOTREACHED */
+}