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