gsasl  1.10.0
About: GNU SASL is an implementation of the Simple Authentication and Security Layer (SASL). Development version.
  Fossies Dox: gsasl-1.10.0.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

w32sock.h
Go to the documentation of this file.
1 /* w32sock.h --- internal auxiliary functions for Windows socket functions
2 
3  Copyright (C) 2008-2021 Free Software Foundation, Inc.
4 
5  This program is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 3 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <https://www.gnu.org/licenses/>. */
17 
18 /* Written by Paolo Bonzini */
19 
20 #include <errno.h>
21 
22 /* Get O_RDWR and O_BINARY. */
23 #include <fcntl.h>
24 
25 /* Get _open_osfhandle(). */
26 #include <io.h>
27 
28 /* Get _get_osfhandle(). */
29 #if GNULIB_MSVC_NOTHROW
30 # include "msvc-nothrow.h"
31 #else
32 # include <io.h>
33 #endif
34 
35 #define FD_TO_SOCKET(fd) ((SOCKET) _get_osfhandle ((fd)))
36 #define SOCKET_TO_FD(fh) (_open_osfhandle ((intptr_t) (fh), O_RDWR | O_BINARY))
37 
38 static inline void
40 {
41  int err = WSAGetLastError ();
42 
43  /* Map some WSAE* errors to the runtime library's error codes. */
44  switch (err)
45  {
46  case WSA_INVALID_HANDLE:
47  errno = EBADF;
48  break;
49  case WSA_NOT_ENOUGH_MEMORY:
50  errno = ENOMEM;
51  break;
52  case WSA_INVALID_PARAMETER:
53  errno = EINVAL;
54  break;
55  case WSAENAMETOOLONG:
56  errno = ENAMETOOLONG;
57  break;
58  case WSAENOTEMPTY:
59  errno = ENOTEMPTY;
60  break;
61  case WSAEWOULDBLOCK:
62  errno = EWOULDBLOCK;
63  break;
64  case WSAEINPROGRESS:
65  errno = EINPROGRESS;
66  break;
67  case WSAEALREADY:
68  errno = EALREADY;
69  break;
70  case WSAENOTSOCK:
71  errno = ENOTSOCK;
72  break;
73  case WSAEDESTADDRREQ:
74  errno = EDESTADDRREQ;
75  break;
76  case WSAEMSGSIZE:
77  errno = EMSGSIZE;
78  break;
79  case WSAEPROTOTYPE:
80  errno = EPROTOTYPE;
81  break;
82  case WSAENOPROTOOPT:
83  errno = ENOPROTOOPT;
84  break;
85  case WSAEPROTONOSUPPORT:
86  errno = EPROTONOSUPPORT;
87  break;
88  case WSAEOPNOTSUPP:
89  errno = EOPNOTSUPP;
90  break;
91  case WSAEAFNOSUPPORT:
92  errno = EAFNOSUPPORT;
93  break;
94  case WSAEADDRINUSE:
95  errno = EADDRINUSE;
96  break;
97  case WSAEADDRNOTAVAIL:
98  errno = EADDRNOTAVAIL;
99  break;
100  case WSAENETDOWN:
101  errno = ENETDOWN;
102  break;
103  case WSAENETUNREACH:
104  errno = ENETUNREACH;
105  break;
106  case WSAENETRESET:
107  errno = ENETRESET;
108  break;
109  case WSAECONNABORTED:
110  errno = ECONNABORTED;
111  break;
112  case WSAECONNRESET:
113  errno = ECONNRESET;
114  break;
115  case WSAENOBUFS:
116  errno = ENOBUFS;
117  break;
118  case WSAEISCONN:
119  errno = EISCONN;
120  break;
121  case WSAENOTCONN:
122  errno = ENOTCONN;
123  break;
124  case WSAETIMEDOUT:
125  errno = ETIMEDOUT;
126  break;
127  case WSAECONNREFUSED:
128  errno = ECONNREFUSED;
129  break;
130  case WSAELOOP:
131  errno = ELOOP;
132  break;
133  case WSAEHOSTUNREACH:
134  errno = EHOSTUNREACH;
135  break;
136  default:
137  errno = (err > 10000 && err < 10025) ? err - 10000 : err;
138  break;
139  }
140 }
#define ECONNABORTED
Definition: errno.in.h:223
#define ENETRESET
Definition: errno.in.h:218
static void set_winsock_errno(void)
Definition: w32sock.h:39