- Rearrange reactos.dff according to rosapps rearrange.
[reactos.git] / rosapps / applications / net / ncftp / sio / UAcceptS.c
1 #include "syshdrs.h"
2
3 #if !defined(NO_UNIX_DOMAIN_SOCKETS)
4
5 int
6 UAcceptS(int sfd, struct sockaddr_un *const addr, int *ualen, int tlen)
7 {
8 int result;
9 fd_set ss;
10 struct timeval tv;
11
12 if (tlen < 0) {
13 errno = 0;
14 for (;;) {
15 *ualen = (int) sizeof(struct sockaddr_un);
16 result = accept(sfd, (struct sockaddr *) addr, (int *) ualen);
17 if ((result >= 0) || (errno != EINTR))
18 return (result);
19 }
20 }
21
22 for (;;) {
23 errno = 0;
24 FD_ZERO(&ss);
25 FD_SET(sfd, &ss);
26 tv.tv_sec = tlen;
27 tv.tv_usec = 0;
28 result = select(sfd + 1, SELECT_TYPE_ARG234 &ss, NULL, NULL, &tv);
29 if (result == 1) {
30 /* ready */
31 break;
32 } else if (result == 0) {
33 /* timeout */
34 errno = ETIMEDOUT;
35 return (kTimeoutErr);
36 } else if (errno != EINTR) {
37 return (-1);
38 }
39 }
40
41 do {
42 *ualen = (int) sizeof(struct sockaddr_un);
43 result = accept(sfd, (struct sockaddr *) addr, (int *) ualen);
44 } while ((result < 0) && (errno == EINTR));
45
46 return (result);
47 } /* UAcceptS */
48
49 #endif
50