mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 12:11:42 +00:00
- Start rosapps rearrange and cleanup process.
svn path=/trunk/; revision=34303
This commit is contained in:
parent
0a0a13a41c
commit
2012315e5a
1206 changed files with 81 additions and 81 deletions
47
rosapps/applications/net/ncftp/sio/SAcceptS.c
Normal file
47
rosapps/applications/net/ncftp/sio/SAcceptS.c
Normal file
|
@ -0,0 +1,47 @@
|
|||
#include "syshdrs.h"
|
||||
|
||||
int
|
||||
SAcceptS(int sfd, struct sockaddr_in *const addr, int tlen)
|
||||
{
|
||||
int result;
|
||||
fd_set ss;
|
||||
struct timeval tv;
|
||||
size_t size;
|
||||
|
||||
if (tlen <= 0) {
|
||||
errno = 0;
|
||||
for (;;) {
|
||||
size = sizeof(struct sockaddr_in);
|
||||
result = accept(sfd, (struct sockaddr *) addr, (int *) &size);
|
||||
if ((result >= 0) || (errno != EINTR))
|
||||
return (result);
|
||||
}
|
||||
}
|
||||
|
||||
forever {
|
||||
errno = 0;
|
||||
FD_ZERO(&ss);
|
||||
FD_SET(sfd, &ss);
|
||||
tv.tv_sec = tlen;
|
||||
tv.tv_usec = 0;
|
||||
result = select(sfd + 1, SELECT_TYPE_ARG234 &ss, NULL, NULL, SELECT_TYPE_ARG5 &tv);
|
||||
if (result == 1) {
|
||||
/* ready */
|
||||
break;
|
||||
} else if (result == 0) {
|
||||
/* timeout */
|
||||
errno = ETIMEDOUT;
|
||||
SETWSATIMEOUTERR
|
||||
return (kTimeoutErr);
|
||||
} else if (errno != EINTR) {
|
||||
return (-1);
|
||||
}
|
||||
}
|
||||
|
||||
do {
|
||||
size = sizeof(struct sockaddr_in);
|
||||
result = accept(sfd, (struct sockaddr *) addr, (int *) &size);
|
||||
} while ((result < 0) && (errno == EINTR));
|
||||
|
||||
return (result);
|
||||
} /* SAcceptS */
|
Loading…
Add table
Add a link
Reference in a new issue