3 #if !defined(NO_UNIX_DOMAIN_SOCKETS) && !defined(NO_SIGNALS)
5 extern volatile Sjmp_buf gNetTimeoutJmp
;
6 extern volatile Sjmp_buf gPipeJmp
;
9 USendto(int sfd
, const char *const buf
, size_t size
, int fl
, const struct sockaddr_un
*const toAddr
, int ualen
, int tlen
)
12 vsio_sigproc_t sigalrm
, sigpipe
;
15 if (SSetjmp(gNetTimeoutJmp
) != 0) {
17 (void) SSignal(SIGALRM
, (sio_sigproc_t
) sigalrm
);
18 (void) SSignal(SIGPIPE
, (sio_sigproc_t
) sigpipe
);
23 if (SSetjmp(gPipeJmp
) != 0) {
25 (void) SSignal(SIGALRM
, (sio_sigproc_t
) sigalrm
);
26 (void) SSignal(SIGPIPE
, (sio_sigproc_t
) sigpipe
);
28 return (kBrokenPipeErr
);
31 sigalrm
= (vsio_sigproc_t
) SSignal(SIGALRM
, SIOHandler
);
32 sigpipe
= (vsio_sigproc_t
) SSignal(SIGPIPE
, SIOHandler
);
36 tleft
= (int) (done
- now
);
38 (void) alarm((unsigned int) tleft
);
39 nwrote
= sendto(sfd
, buf
, size
, fl
,
40 (struct sockaddr
*) toAddr
, ualen
);
45 break; /* Fatal error. */
48 tleft
= (int) (done
- now
);
56 (void) SSignal(SIGALRM
, (sio_sigproc_t
) sigalrm
);
57 (void) SSignal(SIGPIPE
, (sio_sigproc_t
) sigpipe
);