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 ret
= accept(fd
, addr
, len
);
13 if (ret
<0) return ret
;
14 if (flg
& SOCK_CLOEXEC
)
15 __syscall(SYS_fcntl
, ret
, F_SETFD
, FD_CLOEXEC
);
16 if (flg
& SOCK_NONBLOCK
)
17 __syscall(SYS_fcntl
, ret
, F_SETFL
, O_NONBLOCK
);