3 #if !defined(NO_UNIX_DOMAIN_SOCKETS) && !defined(NO_SIGNALS)
5 extern volatile Sjmp_buf gNetTimeoutJmp
;
6 extern volatile Sjmp_buf gPipeJmp
;
9 USendtoByName(int sfd
, const char *const buf
, size_t size
, int fl
, const char *const toAddrStr
, int tlen
)
12 vsio_sigproc_t sigalrm
, sigpipe
;
14 struct sockaddr_un toAddr
;
17 ualen
= MakeSockAddrUn(&toAddr
, toAddrStr
);
19 if (SSetjmp(gNetTimeoutJmp
) != 0) {
21 (void) SSignal(SIGALRM
, (sio_sigproc_t
) sigalrm
);
22 (void) SSignal(SIGPIPE
, (sio_sigproc_t
) sigpipe
);
27 if (SSetjmp(gPipeJmp
) != 0) {
29 (void) SSignal(SIGALRM
, (sio_sigproc_t
) sigalrm
);
30 (void) SSignal(SIGPIPE
, (sio_sigproc_t
) sigpipe
);
32 return (kBrokenPipeErr
);
35 sigalrm
= (vsio_sigproc_t
) SSignal(SIGALRM
, SIOHandler
);
36 sigpipe
= (vsio_sigproc_t
) SSignal(SIGPIPE
, SIOHandler
);
40 tleft
= (int) (done
- now
);
42 (void) alarm((unsigned int) tleft
);
43 nwrote
= sendto(sfd
, buf
, size
, fl
,
44 (struct sockaddr
*) &toAddr
, ualen
);
49 break; /* Fatal error. */
52 tleft
= (int) (done
- now
);
60 (void) SSignal(SIGALRM
, (sio_sigproc_t
) sigalrm
);
61 (void) SSignal(SIGPIPE
, (sio_sigproc_t
) sigpipe
);