Blame gnulib-tests/w32sock.h

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