DESCRIPTION If the macro NDEBUG was defined at the
moment <assert.h> was last included, the macro
assert_perror() generates no code, and hence does nothing at
all. Otherwise, the macro assert_perror() prints an error
message to standard error and terminates the program by
calling abort(3) if errnum is non-zero. The message contains
the filename, function name and line number of the macro
call, and the output of str- error(errnum).

RETURN VALUE No value is returned.

CONFORMING TO This is a GNU extension.

BUGS The purpose of the assert macros is to help the
programmer find bugs in his program, things that cannot
happen unless there was a coding mis- take. However, with
system or library calls the situation is rather different,
and error returns can happen, and will happen, and should be
tested for. Not by an assert, where the test goes away when
NDEBUG is defined, but by proper error handling code. Never
use this macro.