__swsetup: set error flag and errno on error.
authormillert <millert@openbsd.org>
Fri, 6 Oct 2023 16:41:02 +0000 (16:41 +0000)
committermillert <millert@openbsd.org>
Fri, 6 Oct 2023 16:41:02 +0000 (16:41 +0000)
commitfc99cf9338942ecd9adc94ea08bf6188f0428c15
tree4b7421c3f4dbc5e6ca3530e0dffc0234500ea600
parentfd2521f18de773ea9fa31ab490cdc484519dbf4c
__swsetup: set error flag and errno on error.

Previously, we set errno to EBADF if the cantwrite() macro (which calls
__swsetup()) returns true for POSIX compliance.  However, we neglected
to also set the error flag, __SERR.  Rather than set the error flag in
all callers of cantwrite(), set both errno and the error flag in
__swsetup().  This matches what FreeBSD does and makes it possible
to choose a proper errno value for the second error condition in
__swsetup().  OK deraadt@
lib/libc/stdio/fvwrite.c
lib/libc/stdio/putc.c
lib/libc/stdio/vfprintf.c
lib/libc/stdio/vfwprintf.c
lib/libc/stdio/wbuf.c
lib/libc/stdio/wsetup.c