2 #include <sys/socket.h>
7 int accept4(int fd
, struct sockaddr
*restrict addr
, socklen_t
*restrict len
, int flg
)
9 if (!flg
) return accept(fd
, addr
, len
);
10 int ret
= socketcall_cp(accept4
, fd
, addr
, len
, flg
, 0, 0);
11 if (ret
>=0 || (errno
!= ENOSYS
&& errno
!= EINVAL
)) return ret
;
12 if (flg
& ~(SOCK_CLOEXEC
|SOCK_NONBLOCK
)) {
16 ret
= accept(fd
, addr
, len
);
17 if (ret
<0) return ret
;
18 if (flg
& SOCK_CLOEXEC
)
19 __syscall(SYS_fcntl
, ret
, F_SETFD
, FD_CLOEXEC
);
20 if (flg
& SOCK_NONBLOCK
)
21 __syscall(SYS_fcntl
, ret
, F_SETFL
, O_NONBLOCK
);