(assert_perror): New macro.
authorroland <roland>
Wed, 19 Oct 1994 23:52:18 +0000 (23:52 +0000)
committerroland <roland>
Wed, 19 Oct 1994 23:52:18 +0000 (23:52 +0000)
assert/assert.h

index 77c4265..a45c871 100644 (file)
@@ -30,13 +30,24 @@ Cambridge, MA 02139, USA.  */
 #define        _ASSERT_H       1
 #include <features.h>
 
-/* void assert(int expression);
+/* void assert (int expression);
+
    If NDEBUG is defined, do nothing.
    If not, and EXPRESSION is zero, print an error message and abort.  */
 
 #ifdef NDEBUG
 
-#define        assert(expr)    ((void) 0)
+#define        assert(expr)            ((void) 0)
+
+/* void assert_perror (int errnum);
+
+   If NDEBUG is defined, do nothing.  If not, and ERRNUM is not zero, print an
+   error message with the error text for ERRNUM and abort.
+   (This is a GNU extension.) */
+
+#ifdef __USE_GNU
+#define        assert_perror(errnum)   ((void) 0)
+#endif
 
 #else /* Not NDEBUG.  */
 
@@ -50,12 +61,25 @@ extern __NORETURN int __assert_fail __P ((__const char *__assertion,
                                          unsigned int __line,
                                          __const char *__function));
 
+/* Likewise, but prints the error text for ERRNUM.  */
+extern __NORETURN int __assert_perror_fail __P ((int __errnum,
+                                                __const char *__file,
+                                                unsigned int __line,
+                                                __const char *__function));
+
 __END_DECLS
 
 #define        assert(expr)                                                          \
   ((void) ((expr) || __assert_fail (__STRING(expr),                          \
                                    __FILE__, __LINE__, __ASSERT_FUNCTION)))
 
+#ifdef __USE_GNU
+#define assert_perror(errnum)                                                \
+  ((void) ((errnum) && __assert_perror_fail ((errnum),                       \
+                                            __FILE__, __LINE__,              \
+                                            __ASSERT_FUNCTION)))
+#endif
+
 /* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
    which contains the name of the function currently being defined.
    This is broken in G++ before version 2.6.  */
@@ -66,5 +90,6 @@ __END_DECLS
 #define __ASSERT_FUNCTION      __PRETTY_FUNCTION__
 #endif
 
+
 #endif /* NDEBUG.  */