#define _GNU_SOURCE
#include <sys/socket.h>
#include <errno.h>
#include <fcntl.h>
#include "syscall.h"
#include "libc.h"

int accept4(int fd,
            struct sockaddr* restrict addr,
            socklen_t* restrict len,
            int flg) {
  if (!flg)
    return accept(fd, addr, len);
  int ret = syscall_cp(SYS_accept4, fd, addr, len, flg, 0, 0);
  if (ret >= 0 || (errno != ENOSYS && errno != EINVAL))
    return ret;
  ret = accept(fd, addr, len);
  if (ret < 0)
    return ret;
  if (flg & SOCK_CLOEXEC)
    __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC);
  if (flg & SOCK_NONBLOCK)
    __syscall(SYS_fcntl, ret, F_SETFL, O_NONBLOCK);
  return ret;
}
