FNOSIGPIPE
if (error == EPIPE && (fp->f_flag & FNOSIGPIPE) == 0) {
fp->f_flag |= flags & (FNONBLOCK|FNOSIGPIPE);
fp->f_flag = FREAD | FWRITE | (flags & (FNONBLOCK|FNOSIGPIPE));
*retval = (fp->f_flag & FNOSIGPIPE) != 0;
atomic_or_uint(&fp->f_flag, FNOSIGPIPE);
atomic_and_uint(&fp->f_flag, ~FNOSIGPIPE);
if (error == EPIPE && !(fp->f_flag & FNOSIGPIPE)) {
if (error == EPIPE && !(fp->f_flag & FNOSIGPIPE)) {
((flags & SOCK_NOSIGPIPE) ? FNOSIGPIPE : 0);
atomic_or_uint(&fp->f_flag, FNOSIGPIPE);
atomic_and_uint(&fp->f_flag, ~FNOSIGPIPE);
if (fp->f_flag & FNOSIGPIPE)
((flags & SOCK_NOSIGPIPE) ? FNOSIGPIPE : 0);
if (error == EPIPE && (fp->f_flag & FNOSIGPIPE) == 0 &&
FDIRECT|FNOSIGPIPE)