Blame gnulib/tests/w32sock.h

Packit Service a2ae7a
/* w32sock.h --- internal auxiliary functions for Windows socket functions
Packit Service a2ae7a
Packit Service a2ae7a
   Copyright (C) 2008-2019 Free Software Foundation, Inc.
Packit Service a2ae7a
Packit Service a2ae7a
   This program is free software: you can redistribute it and/or modify
Packit Service a2ae7a
   it under the terms of the GNU General Public License as published by
Packit Service a2ae7a
   the Free Software Foundation; either version 3 of the License, or
Packit Service a2ae7a
   (at your option) any later version.
Packit Service a2ae7a
Packit Service a2ae7a
   This program is distributed in the hope that it will be useful,
Packit Service a2ae7a
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service a2ae7a
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service a2ae7a
   GNU General Public License for more details.
Packit Service a2ae7a
Packit Service a2ae7a
   You should have received a copy of the GNU General Public License
Packit Service a2ae7a
   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
Packit Service a2ae7a
Packit Service a2ae7a
/* Written by Paolo Bonzini */
Packit Service a2ae7a
Packit Service a2ae7a
#include <errno.h>
Packit Service a2ae7a
Packit Service a2ae7a
/* Get O_RDWR and O_BINARY.  */
Packit Service a2ae7a
#include <fcntl.h>
Packit Service a2ae7a
Packit Service a2ae7a
/* Get _open_osfhandle().  */
Packit Service a2ae7a
#include <io.h>
Packit Service a2ae7a
Packit Service a2ae7a
/* Get _get_osfhandle().  */
Packit Service a2ae7a
#if GNULIB_MSVC_NOTHROW
Packit Service a2ae7a
# include "msvc-nothrow.h"
Packit Service a2ae7a
#else
Packit Service a2ae7a
# include <io.h>
Packit Service a2ae7a
#endif
Packit Service a2ae7a
Packit Service a2ae7a
#define FD_TO_SOCKET(fd)   ((SOCKET) _get_osfhandle ((fd)))
Packit Service a2ae7a
#define SOCKET_TO_FD(fh)   (_open_osfhandle ((intptr_t) (fh), O_RDWR | O_BINARY))
Packit Service a2ae7a
Packit Service a2ae7a
static inline void
Packit Service a2ae7a
set_winsock_errno (void)
Packit Service a2ae7a
{
Packit Service a2ae7a
  int err = WSAGetLastError ();
Packit Service a2ae7a
Packit Service a2ae7a
  /* Map some WSAE* errors to the runtime library's error codes.  */
Packit Service a2ae7a
  switch (err)
Packit Service a2ae7a
    {
Packit Service a2ae7a
    case WSA_INVALID_HANDLE:
Packit Service a2ae7a
      errno = EBADF;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSA_NOT_ENOUGH_MEMORY:
Packit Service a2ae7a
      errno = ENOMEM;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSA_INVALID_PARAMETER:
Packit Service a2ae7a
      errno = EINVAL;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAENAMETOOLONG:
Packit Service a2ae7a
      errno = ENAMETOOLONG;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAENOTEMPTY:
Packit Service a2ae7a
      errno = ENOTEMPTY;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEWOULDBLOCK:
Packit Service a2ae7a
      errno = EWOULDBLOCK;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEINPROGRESS:
Packit Service a2ae7a
      errno = EINPROGRESS;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEALREADY:
Packit Service a2ae7a
      errno = EALREADY;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAENOTSOCK:
Packit Service a2ae7a
      errno = ENOTSOCK;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEDESTADDRREQ:
Packit Service a2ae7a
      errno = EDESTADDRREQ;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEMSGSIZE:
Packit Service a2ae7a
      errno = EMSGSIZE;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEPROTOTYPE:
Packit Service a2ae7a
      errno = EPROTOTYPE;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAENOPROTOOPT:
Packit Service a2ae7a
      errno = ENOPROTOOPT;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEPROTONOSUPPORT:
Packit Service a2ae7a
      errno = EPROTONOSUPPORT;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEOPNOTSUPP:
Packit Service a2ae7a
      errno = EOPNOTSUPP;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEAFNOSUPPORT:
Packit Service a2ae7a
      errno = EAFNOSUPPORT;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEADDRINUSE:
Packit Service a2ae7a
      errno = EADDRINUSE;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEADDRNOTAVAIL:
Packit Service a2ae7a
      errno = EADDRNOTAVAIL;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAENETDOWN:
Packit Service a2ae7a
      errno = ENETDOWN;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAENETUNREACH:
Packit Service a2ae7a
      errno = ENETUNREACH;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAENETRESET:
Packit Service a2ae7a
      errno = ENETRESET;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAECONNABORTED:
Packit Service a2ae7a
      errno = ECONNABORTED;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAECONNRESET:
Packit Service a2ae7a
      errno = ECONNRESET;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAENOBUFS:
Packit Service a2ae7a
      errno = ENOBUFS;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEISCONN:
Packit Service a2ae7a
      errno = EISCONN;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAENOTCONN:
Packit Service a2ae7a
      errno = ENOTCONN;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAETIMEDOUT:
Packit Service a2ae7a
      errno = ETIMEDOUT;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAECONNREFUSED:
Packit Service a2ae7a
      errno = ECONNREFUSED;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAELOOP:
Packit Service a2ae7a
      errno = ELOOP;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    case WSAEHOSTUNREACH:
Packit Service a2ae7a
      errno = EHOSTUNREACH;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    default:
Packit Service a2ae7a
      errno = (err > 10000 && err < 10025) ? err - 10000 : err;
Packit Service a2ae7a
      break;
Packit Service a2ae7a
    }
Packit Service a2ae7a
}