3 #if !defined(NO_SIGNALS) && defined(SIGPIPE)
4 extern volatile Sjmp_buf gPipeJmp
;
7 PWrite(int sfd
, const char *const buf0
, size_t size
)
10 const char *volatile buf
= buf0
;
12 #if !defined(NO_SIGNALS) && defined(SIGPIPE)
13 vsio_sigproc_t sigpipe
;
15 if (SSetjmp(gPipeJmp
) != 0) {
16 (void) SSignal(SIGPIPE
, (sio_sigproc_t
) sigpipe
);
17 nwrote
= size
- nleft
;
21 return (kBrokenPipeErr
);
24 sigpipe
= (vsio_sigproc_t
) SSignal(SIGPIPE
, SIOHandler
);
29 nwrote
= write(sfd
, buf
, nleft
);
32 nwrote
= size
- nleft
;
47 nwrote
= size
- nleft
;
50 #if !defined(NO_SIGNALS) && defined(SIGPIPE)
51 (void) SSignal(SIGPIPE
, (sio_sigproc_t
) sigpipe
);