| OLD | NEW | 
|---|
| 1 #define _GNU_SOURCE | 1 #define _GNU_SOURCE | 
| 2 #include <sys/socket.h> | 2 #include <sys/socket.h> | 
| 3 #include <errno.h> | 3 #include <errno.h> | 
| 4 #include <fcntl.h> | 4 #include <fcntl.h> | 
| 5 #include "syscall.h" | 5 #include "syscall.h" | 
| 6 #include "libc.h" | 6 #include "libc.h" | 
| 7 | 7 | 
| 8 int accept4(int fd, struct sockaddr *restrict addr, socklen_t *restrict len, int
     flg) | 8 int accept4(int fd, | 
| 9 { | 9             struct sockaddr* restrict addr, | 
| 10 »       if (!flg) return accept(fd, addr, len); | 10             socklen_t* restrict len, | 
| 11 »       int ret = socketcall_cp(accept4, fd, addr, len, flg, 0, 0); | 11             int flg) { | 
| 12 »       if (ret>=0 || (errno != ENOSYS && errno != EINVAL)) return ret; | 12   if (!flg) | 
| 13 »       ret = accept(fd, addr, len); | 13     return accept(fd, addr, len); | 
| 14 »       if (ret<0) return ret; | 14   int ret = socketcall_cp(accept4, fd, addr, len, flg, 0, 0); | 
| 15 »       if (flg & SOCK_CLOEXEC) | 15   if (ret >= 0 || (errno != ENOSYS && errno != EINVAL)) | 
| 16 »       »       __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC); | 16     return ret; | 
| 17 »       if (flg & SOCK_NONBLOCK) | 17   ret = accept(fd, addr, len); | 
| 18 »       »       __syscall(SYS_fcntl, ret, F_SETFL, O_NONBLOCK); | 18   if (ret < 0) | 
| 19 »       return ret; | 19     return ret; | 
|  | 20   if (flg & SOCK_CLOEXEC) | 
|  | 21     __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC); | 
|  | 22   if (flg & SOCK_NONBLOCK) | 
|  | 23     __syscall(SYS_fcntl, ret, F_SETFL, O_NONBLOCK); | 
|  | 24   return ret; | 
| 20 } | 25 } | 
| OLD | NEW | 
|---|