perror
======

POSIX specification:
 https://pubs.opengroup.org/onlinepubs/9699919799/functions/perror.html

Gnulib module: perror

Portability problems fixed by Gnulib:

  * This function does not support the error values that are specified by POSIX but not defined by the system, on some platforms: OpenBSD 4.0, Cygwin 1.5.x, mingw, MSVC 14.

  * This function treats errno of 0 like failure, although POSIX requires that the message declare it as a success, on some platforms: FreeBSD 8.2, OpenBSD 4.7, macOS 11.1.

  * This function clobbers the strerror buffer on some platforms: Cygwin 1.7.9.

  * This function fails to print a useful a string for out-of-range integers on some platforms: HP-UX 11, IRIX 6.5.

Portability problems not fixed by Gnulib:

  * POSIX requires that this function set the stream error bit (detected by ferror) on write failure, but not all platforms do this: glibc 2.13, cygwin 1.7.9.

  * POSIX requires that this function not alter stream orientation, but the gnulib replacement locks in byte orientation and fails on wide character streams.