3 #if !defined(NO_UNIX_DOMAIN_SOCKETS) && !defined(NO_SIGNALS)
5 extern volatile Sjmp_buf gNetTimeoutJmp
;
6 extern volatile Sjmp_buf gPipeJmp
;
9 UAcceptA(int sfd
, struct sockaddr_un
*const addr
, int *ualen
, int tlen
)
12 vsio_sigproc_t sigalrm
, sigpipe
;
17 *ualen
= (int) sizeof(struct sockaddr_un
);
18 result
= accept(sfd
, (struct sockaddr
*) addr
, (int *) ualen
);
19 if ((result
>= 0) || (errno
!= EINTR
))
24 if (SSetjmp(gNetTimeoutJmp
) != 0) {
26 (void) SSignal(SIGALRM
, (sio_sigproc_t
) sigalrm
);
27 (void) SSignal(SIGPIPE
, (sio_sigproc_t
) sigpipe
);
32 sigalrm
= (vsio_sigproc_t
) SSignal(SIGALRM
, SIOHandler
);
33 sigpipe
= (vsio_sigproc_t
) SSignal(SIGPIPE
, SIG_IGN
);
34 alarm((unsigned int) tlen
);
38 *ualen
= (int) sizeof(struct sockaddr_un
);
39 result
= accept(sfd
, (struct sockaddr
*) addr
, (int *) ualen
);
40 } while ((result
< 0) && (errno
== EINTR
));
43 (void) SSignal(SIGALRM
, (sio_sigproc_t
) sigalrm
);
44 (void) SSignal(SIGPIPE
, (sio_sigproc_t
) sigpipe
);