Blame src/gl/w32sock.h

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