| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 #include <sys/socket.h> | 
|  | 2 #include <fcntl.h> | 
|  | 3 #include <errno.h> | 
|  | 4 #include "syscall.h" | 
|  | 5 | 
|  | 6 int socketpair(int domain, int type, int protocol, int fd[2]) | 
|  | 7 { | 
|  | 8         int r = socketcall(socketpair, domain, type, protocol, fd, 0, 0); | 
|  | 9         if (r<0 && (errno==EINVAL || errno==EPROTONOSUPPORT) | 
|  | 10             && (type&(SOCK_CLOEXEC|SOCK_NONBLOCK))) { | 
|  | 11                 r = socketcall(socketpair, domain, | 
|  | 12                         type & ~(SOCK_CLOEXEC|SOCK_NONBLOCK), | 
|  | 13                         protocol, fd, 0, 0); | 
|  | 14                 if (r < 0) return r; | 
|  | 15                 if (type & SOCK_CLOEXEC) { | 
|  | 16                         __syscall(SYS_fcntl, fd[0], F_SETFD, FD_CLOEXEC); | 
|  | 17                         __syscall(SYS_fcntl, fd[1], F_SETFD, FD_CLOEXEC); | 
|  | 18                 } | 
|  | 19                 if (type & SOCK_NONBLOCK) { | 
|  | 20                         __syscall(SYS_fcntl, fd[0], F_SETFL, O_NONBLOCK); | 
|  | 21                         __syscall(SYS_fcntl, fd[1], F_SETFL, O_NONBLOCK); | 
|  | 22                 } | 
|  | 23         } | 
|  | 24         return r; | 
|  | 25 } | 
| OLD | NEW | 
|---|