1 /* sockets.h - wrappers for Windows socket functions 2 3 Copyright (C) 2008-2021 Free Software Foundation, Inc. 4 5 This file is free software: you can redistribute it and/or modify 6 it under the terms of the GNU Lesser General Public License as 7 published by the Free Software Foundation; either version 2.1 of the 8 License, or (at your option) any later version. 9 10 This file 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 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public License 16 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 17 18 /* Written by Simon Josefsson */ 19 20 #ifndef SOCKETS_H 21 #define SOCKETS_H 1 22 23 #define SOCKETS_1_0 0x0001 24 #define SOCKETS_1_1 0x0101 25 #define SOCKETS_2_0 0x0002 26 #define SOCKETS_2_1 0x0102 27 #define SOCKETS_2_2 0x0202 28 29 int gl_sockets_startup (int version) /* */ 30 #ifndef WINDOWS_SOCKETS 31 _GL_ATTRIBUTE_CONST 32 #endif 33 ; 34 35 int gl_sockets_cleanup (void) 36 #ifndef WINDOWS_SOCKETS 37 _GL_ATTRIBUTE_CONST 38 #endif 39 ; 40 41 /* This function is useful it you create a socket using gnulib's 42 Winsock wrappers but needs to pass on the socket handle to some 43 other library that only accepts sockets. */ 44 #ifdef WINDOWS_SOCKETS 45 46 # include <sys/socket.h> 47 48 # if GNULIB_MSVC_NOTHROW 49 # include "msvc-nothrow.h" 50 # else 51 # include <io.h> 52 # endif 53 54 static inline SOCKET 55 gl_fd_to_handle (int fd) 56 { 57 return _get_osfhandle (fd); 58 } 59 60 #else 61 62 # define gl_fd_to_handle(x) (x) 63 64 #endif /* WINDOWS_SOCKETS */ 65 66 #endif /* SOCKETS_H */