diff options
Diffstat (limited to 'gl/sys_socket.in.h')
| -rw-r--r-- | gl/sys_socket.in.h | 671 |
1 files changed, 438 insertions, 233 deletions
diff --git a/gl/sys_socket.in.h b/gl/sys_socket.in.h index dadd56ac..fc105e63 100644 --- a/gl/sys_socket.in.h +++ b/gl/sys_socket.in.h | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* Provide a sys/socket header file for systems lacking it (read: MinGW) | 1 | /* Provide a sys/socket header file for systems lacking it (read: MinGW) |
| 2 | and for systems where it is incomplete. | 2 | and for systems where it is incomplete. |
| 3 | Copyright (C) 2005-2009 Free Software Foundation, Inc. | 3 | Copyright (C) 2005-2010 Free Software Foundation, Inc. |
| 4 | Written by Simon Josefsson. | 4 | Written by Simon Josefsson. |
| 5 | 5 | ||
| 6 | This program is free software; you can redistribute it and/or modify | 6 | This program is free software; you can redistribute it and/or modify |
| @@ -23,13 +23,27 @@ | |||
| 23 | It is intended to provide definitions and prototypes needed by an | 23 | It is intended to provide definitions and prototypes needed by an |
| 24 | application. */ | 24 | application. */ |
| 25 | 25 | ||
| 26 | #if __GNUC__ >= 3 | ||
| 27 | @PRAGMA_SYSTEM_HEADER@ | ||
| 28 | #endif | ||
| 29 | |||
| 30 | #if defined _GL_ALREADY_INCLUDING_SYS_SOCKET_H | ||
| 31 | /* Special invocation convention: | ||
| 32 | - On Cygwin 1.5.x we have a sequence of nested includes | ||
| 33 | <sys/socket.h> -> <cygwin/socket.h> -> <asm/socket.h> -> <cygwin/if.h>, | ||
| 34 | and the latter includes <sys/socket.h>. In this situation, the functions | ||
| 35 | are not yet declared, therefore we cannot provide the C++ aliases. */ | ||
| 36 | |||
| 37 | #@INCLUDE_NEXT@ @NEXT_SYS_SOCKET_H@ | ||
| 38 | |||
| 39 | #else | ||
| 40 | /* Normal invocation convention. */ | ||
| 41 | |||
| 26 | #ifndef _GL_SYS_SOCKET_H | 42 | #ifndef _GL_SYS_SOCKET_H |
| 27 | 43 | ||
| 28 | #if @HAVE_SYS_SOCKET_H@ | 44 | #if @HAVE_SYS_SOCKET_H@ |
| 29 | 45 | ||
| 30 | # if __GNUC__ >= 3 | 46 | # define _GL_ALREADY_INCLUDING_SYS_SOCKET_H |
| 31 | @PRAGMA_SYSTEM_HEADER@ | ||
| 32 | # endif | ||
| 33 | 47 | ||
| 34 | /* On many platforms, <sys/socket.h> assumes prior inclusion of | 48 | /* On many platforms, <sys/socket.h> assumes prior inclusion of |
| 35 | <sys/types.h>. */ | 49 | <sys/types.h>. */ |
| @@ -38,11 +52,23 @@ | |||
| 38 | /* The include_next requires a split double-inclusion guard. */ | 52 | /* The include_next requires a split double-inclusion guard. */ |
| 39 | # @INCLUDE_NEXT@ @NEXT_SYS_SOCKET_H@ | 53 | # @INCLUDE_NEXT@ @NEXT_SYS_SOCKET_H@ |
| 40 | 54 | ||
| 55 | # undef _GL_ALREADY_INCLUDING_SYS_SOCKET_H | ||
| 56 | |||
| 41 | #endif | 57 | #endif |
| 42 | 58 | ||
| 43 | #ifndef _GL_SYS_SOCKET_H | 59 | #ifndef _GL_SYS_SOCKET_H |
| 44 | #define _GL_SYS_SOCKET_H | 60 | #define _GL_SYS_SOCKET_H |
| 45 | 61 | ||
| 62 | /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ | ||
| 63 | |||
| 64 | /* The definition of _GL_ARG_NONNULL is copied here. */ | ||
| 65 | |||
| 66 | /* The definition of _GL_WARN_ON_USE is copied here. */ | ||
| 67 | |||
| 68 | #if !@HAVE_SA_FAMILY_T@ | ||
| 69 | typedef unsigned short sa_family_t; | ||
| 70 | #endif | ||
| 71 | |||
| 46 | #if !@HAVE_STRUCT_SOCKADDR_STORAGE@ | 72 | #if !@HAVE_STRUCT_SOCKADDR_STORAGE@ |
| 47 | # include <alignof.h> | 73 | # include <alignof.h> |
| 48 | /* Code taken from glibc sysdeps/unix/sysv/linux/bits/socket.h on | 74 | /* Code taken from glibc sysdeps/unix/sysv/linux/bits/socket.h on |
| @@ -50,10 +76,10 @@ | |||
| 50 | # define __ss_aligntype unsigned long int | 76 | # define __ss_aligntype unsigned long int |
| 51 | # define _SS_SIZE 256 | 77 | # define _SS_SIZE 256 |
| 52 | # define _SS_PADSIZE \ | 78 | # define _SS_PADSIZE \ |
| 53 | (_SS_SIZE - ((sizeof (sa_family_t) >= alignof (__ss_aligntype) \ | 79 | (_SS_SIZE - ((sizeof (sa_family_t) >= alignof (__ss_aligntype) \ |
| 54 | ? sizeof (sa_family_t) \ | 80 | ? sizeof (sa_family_t) \ |
| 55 | : alignof (__ss_aligntype)) \ | 81 | : alignof (__ss_aligntype)) \ |
| 56 | + sizeof (__ss_aligntype))) | 82 | + sizeof (__ss_aligntype))) |
| 57 | 83 | ||
| 58 | struct sockaddr_storage | 84 | struct sockaddr_storage |
| 59 | { | 85 | { |
| @@ -120,8 +146,6 @@ struct sockaddr_storage | |||
| 120 | # define SHUT_RDWR SD_BOTH | 146 | # define SHUT_RDWR SD_BOTH |
| 121 | # endif | 147 | # endif |
| 122 | 148 | ||
| 123 | /* The definition of GL_LINK_WARNING is copied here. */ | ||
| 124 | |||
| 125 | # if @HAVE_WINSOCK2_H@ | 149 | # if @HAVE_WINSOCK2_H@ |
| 126 | /* Include headers needed by the emulation code. */ | 150 | /* Include headers needed by the emulation code. */ |
| 127 | # include <sys/types.h> | 151 | # include <sys/types.h> |
| @@ -131,11 +155,9 @@ typedef int socklen_t; | |||
| 131 | 155 | ||
| 132 | # endif | 156 | # endif |
| 133 | 157 | ||
| 134 | # ifdef __cplusplus | 158 | #endif |
| 135 | extern "C" { | ||
| 136 | # endif | ||
| 137 | 159 | ||
| 138 | # if @HAVE_WINSOCK2_H@ | 160 | #if @HAVE_WINSOCK2_H@ |
| 139 | 161 | ||
| 140 | /* Re-define FD_ISSET to avoid a WSA call while we are not using | 162 | /* Re-define FD_ISSET to avoid a WSA call while we are not using |
| 141 | network sockets. */ | 163 | network sockets. */ |
| @@ -153,271 +175,454 @@ rpl_fd_isset (SOCKET fd, fd_set * set) | |||
| 153 | return 0; | 175 | return 0; |
| 154 | } | 176 | } |
| 155 | 177 | ||
| 156 | # undef FD_ISSET | 178 | # undef FD_ISSET |
| 157 | # define FD_ISSET(fd, set) rpl_fd_isset(fd, set) | 179 | # define FD_ISSET(fd, set) rpl_fd_isset(fd, set) |
| 158 | 180 | ||
| 159 | # endif | 181 | #endif |
| 160 | 182 | ||
| 161 | /* Wrap everything else to use libc file descriptors for sockets. */ | 183 | /* Wrap everything else to use libc file descriptors for sockets. */ |
| 162 | 184 | ||
| 163 | # if @HAVE_WINSOCK2_H@ && !defined _GL_UNISTD_H | 185 | #if @HAVE_WINSOCK2_H@ && !defined _GL_UNISTD_H |
| 186 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 164 | # undef close | 187 | # undef close |
| 165 | # define close close_used_without_including_unistd_h | 188 | # define close close_used_without_including_unistd_h |
| 189 | # else | ||
| 190 | _GL_WARN_ON_USE (close, | ||
| 191 | "close() used without including <unistd.h>"); | ||
| 166 | # endif | 192 | # endif |
| 193 | #endif | ||
| 167 | 194 | ||
| 168 | # if @HAVE_WINSOCK2_H@ && !defined _GL_UNISTD_H | 195 | #if @HAVE_WINSOCK2_H@ && !defined _GL_UNISTD_H |
| 196 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 169 | # undef gethostname | 197 | # undef gethostname |
| 170 | # define gethostname gethostname_used_without_including_unistd_h | 198 | # define gethostname gethostname_used_without_including_unistd_h |
| 199 | # else | ||
| 200 | _GL_WARN_ON_USE (gethostname, | ||
| 201 | "gethostname() used without including <unistd.h>"); | ||
| 171 | # endif | 202 | # endif |
| 203 | #endif | ||
| 172 | 204 | ||
| 173 | # if @GNULIB_SOCKET@ | 205 | #if @GNULIB_SOCKET@ |
| 174 | # if @HAVE_WINSOCK2_H@ | 206 | # if @HAVE_WINSOCK2_H@ |
| 207 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 175 | # undef socket | 208 | # undef socket |
| 176 | # define socket rpl_socket | 209 | # define socket rpl_socket |
| 177 | extern int rpl_socket (int, int, int protocol); | ||
| 178 | # endif | 210 | # endif |
| 179 | # elif @HAVE_WINSOCK2_H@ | 211 | _GL_FUNCDECL_RPL (socket, int, (int domain, int type, int protocol)); |
| 180 | # undef socket | 212 | _GL_CXXALIAS_RPL (socket, int, (int domain, int type, int protocol)); |
| 181 | # define socket socket_used_without_requesting_gnulib_module_socket | 213 | # else |
| 182 | # elif defined GNULIB_POSIXCHECK | 214 | _GL_CXXALIAS_SYS (socket, int, (int domain, int type, int protocol)); |
| 183 | # undef socket | 215 | # endif |
| 184 | # define socket(d,t,p) \ | 216 | _GL_CXXALIASWARN (socket); |
| 185 | (GL_LINK_WARNING ("socket is not always POSIX compliant - " \ | 217 | #elif @HAVE_WINSOCK2_H@ |
| 186 | "use gnulib module socket for portability"), \ | 218 | # undef socket |
| 187 | socket (d, t, p)) | 219 | # define socket socket_used_without_requesting_gnulib_module_socket |
| 188 | # endif | 220 | #elif defined GNULIB_POSIXCHECK |
| 189 | 221 | # undef socket | |
| 190 | # if @GNULIB_CONNECT@ | 222 | # if HAVE_RAW_DECL_SOCKET |
| 191 | # if @HAVE_WINSOCK2_H@ | 223 | _GL_WARN_ON_USE (socket, "socket is not always POSIX compliant - " |
| 224 | "use gnulib module socket for portability"); | ||
| 225 | # endif | ||
| 226 | #endif | ||
| 227 | |||
| 228 | #if @GNULIB_CONNECT@ | ||
| 229 | # if @HAVE_WINSOCK2_H@ | ||
| 230 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 192 | # undef connect | 231 | # undef connect |
| 193 | # define connect rpl_connect | 232 | # define connect rpl_connect |
| 194 | extern int rpl_connect (int, struct sockaddr *, int); | ||
| 195 | # endif | 233 | # endif |
| 196 | # elif @HAVE_WINSOCK2_H@ | 234 | _GL_FUNCDECL_RPL (connect, int, |
| 197 | # undef connect | 235 | (int fd, const struct sockaddr *addr, socklen_t addrlen) |
| 198 | # define connect socket_used_without_requesting_gnulib_module_connect | 236 | _GL_ARG_NONNULL ((2))); |
| 199 | # elif defined GNULIB_POSIXCHECK | 237 | _GL_CXXALIAS_RPL (connect, int, |
| 200 | # undef connect | 238 | (int fd, const struct sockaddr *addr, socklen_t addrlen)); |
| 201 | # define connect(s,a,l) \ | 239 | # else |
| 202 | (GL_LINK_WARNING ("connect is not always POSIX compliant - " \ | 240 | _GL_CXXALIAS_SYS (connect, int, |
| 203 | "use gnulib module connect for portability"), \ | 241 | (int fd, const struct sockaddr *addr, socklen_t addrlen)); |
| 204 | connect (s, a, l)) | 242 | # endif |
| 205 | # endif | 243 | _GL_CXXALIASWARN (connect); |
| 206 | 244 | #elif @HAVE_WINSOCK2_H@ | |
| 207 | # if @GNULIB_ACCEPT@ | 245 | # undef connect |
| 208 | # if @HAVE_WINSOCK2_H@ | 246 | # define connect socket_used_without_requesting_gnulib_module_connect |
| 247 | #elif defined GNULIB_POSIXCHECK | ||
| 248 | # undef connect | ||
| 249 | # if HAVE_RAW_DECL_CONNECT | ||
| 250 | _GL_WARN_ON_USE (connect, "connect is not always POSIX compliant - " | ||
| 251 | "use gnulib module connect for portability"); | ||
| 252 | # endif | ||
| 253 | #endif | ||
| 254 | |||
| 255 | #if @GNULIB_ACCEPT@ | ||
| 256 | # if @HAVE_WINSOCK2_H@ | ||
| 257 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 209 | # undef accept | 258 | # undef accept |
| 210 | # define accept rpl_accept | 259 | # define accept rpl_accept |
| 211 | extern int rpl_accept (int, struct sockaddr *, int *); | ||
| 212 | # endif | 260 | # endif |
| 213 | # elif @HAVE_WINSOCK2_H@ | 261 | _GL_FUNCDECL_RPL (accept, int, |
| 214 | # undef accept | 262 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); |
| 215 | # define accept accept_used_without_requesting_gnulib_module_accept | 263 | _GL_CXXALIAS_RPL (accept, int, |
| 216 | # elif defined GNULIB_POSIXCHECK | 264 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); |
| 217 | # undef accept | 265 | # else |
| 218 | # define accept(s,a,l) \ | 266 | /* Need to cast, because on Solaris 10 systems, the third parameter is |
| 219 | (GL_LINK_WARNING ("accept is not always POSIX compliant - " \ | 267 | void *addrlen. */ |
| 220 | "use gnulib module accept for portability"), \ | 268 | _GL_CXXALIAS_SYS_CAST (accept, int, |
| 221 | accept (s, a, l)) | 269 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); |
| 222 | # endif | 270 | # endif |
| 223 | 271 | _GL_CXXALIASWARN (accept); | |
| 224 | # if @GNULIB_BIND@ | 272 | #elif @HAVE_WINSOCK2_H@ |
| 225 | # if @HAVE_WINSOCK2_H@ | 273 | # undef accept |
| 274 | # define accept accept_used_without_requesting_gnulib_module_accept | ||
| 275 | #elif defined GNULIB_POSIXCHECK | ||
| 276 | # undef accept | ||
| 277 | # if HAVE_RAW_DECL_ACCEPT | ||
| 278 | _GL_WARN_ON_USE (accept, "accept is not always POSIX compliant - " | ||
| 279 | "use gnulib module accept for portability"); | ||
| 280 | # endif | ||
| 281 | #endif | ||
| 282 | |||
| 283 | #if @GNULIB_BIND@ | ||
| 284 | # if @HAVE_WINSOCK2_H@ | ||
| 285 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 226 | # undef bind | 286 | # undef bind |
| 227 | # define bind rpl_bind | 287 | # define bind rpl_bind |
| 228 | extern int rpl_bind (int, struct sockaddr *, int); | ||
| 229 | # endif | 288 | # endif |
| 230 | # elif @HAVE_WINSOCK2_H@ | 289 | _GL_FUNCDECL_RPL (bind, int, |
| 231 | # undef bind | 290 | (int fd, const struct sockaddr *addr, socklen_t addrlen) |
| 232 | # define bind bind_used_without_requesting_gnulib_module_bind | 291 | _GL_ARG_NONNULL ((2))); |
| 233 | # elif defined GNULIB_POSIXCHECK | 292 | _GL_CXXALIAS_RPL (bind, int, |
| 234 | # undef bind | 293 | (int fd, const struct sockaddr *addr, socklen_t addrlen)); |
| 235 | # define bind(s,a,l) \ | 294 | # else |
| 236 | (GL_LINK_WARNING ("bind is not always POSIX compliant - " \ | 295 | _GL_CXXALIAS_SYS (bind, int, |
| 237 | "use gnulib module bind for portability"), \ | 296 | (int fd, const struct sockaddr *addr, socklen_t addrlen)); |
| 238 | bind (s, a, l)) | 297 | # endif |
| 239 | # endif | 298 | _GL_CXXALIASWARN (bind); |
| 240 | 299 | #elif @HAVE_WINSOCK2_H@ | |
| 241 | # if @GNULIB_GETPEERNAME@ | 300 | # undef bind |
| 242 | # if @HAVE_WINSOCK2_H@ | 301 | # define bind bind_used_without_requesting_gnulib_module_bind |
| 302 | #elif defined GNULIB_POSIXCHECK | ||
| 303 | # undef bind | ||
| 304 | # if HAVE_RAW_DECL_BIND | ||
| 305 | _GL_WARN_ON_USE (bind, "bind is not always POSIX compliant - " | ||
| 306 | "use gnulib module bind for portability"); | ||
| 307 | # endif | ||
| 308 | #endif | ||
| 309 | |||
| 310 | #if @GNULIB_GETPEERNAME@ | ||
| 311 | # if @HAVE_WINSOCK2_H@ | ||
| 312 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 243 | # undef getpeername | 313 | # undef getpeername |
| 244 | # define getpeername rpl_getpeername | 314 | # define getpeername rpl_getpeername |
| 245 | extern int rpl_getpeername (int, struct sockaddr *, int *); | ||
| 246 | # endif | 315 | # endif |
| 247 | # elif @HAVE_WINSOCK2_H@ | 316 | _GL_FUNCDECL_RPL (getpeername, int, |
| 248 | # undef getpeername | 317 | (int fd, struct sockaddr *addr, socklen_t *addrlen) |
| 249 | # define getpeername getpeername_used_without_requesting_gnulib_module_getpeername | 318 | _GL_ARG_NONNULL ((2, 3))); |
| 250 | # elif defined GNULIB_POSIXCHECK | 319 | _GL_CXXALIAS_RPL (getpeername, int, |
| 251 | # undef getpeername | 320 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); |
| 252 | # define getpeername(s,a,l) \ | 321 | # else |
| 253 | (GL_LINK_WARNING ("getpeername is not always POSIX compliant - " \ | 322 | /* Need to cast, because on Solaris 10 systems, the third parameter is |
| 254 | "use gnulib module getpeername for portability"), \ | 323 | void *addrlen. */ |
| 255 | getpeername (s, a, l)) | 324 | _GL_CXXALIAS_SYS_CAST (getpeername, int, |
| 256 | # endif | 325 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); |
| 257 | 326 | # endif | |
| 258 | # if @GNULIB_GETSOCKNAME@ | 327 | _GL_CXXALIASWARN (getpeername); |
| 259 | # if @HAVE_WINSOCK2_H@ | 328 | #elif @HAVE_WINSOCK2_H@ |
| 329 | # undef getpeername | ||
| 330 | # define getpeername getpeername_used_without_requesting_gnulib_module_getpeername | ||
| 331 | #elif defined GNULIB_POSIXCHECK | ||
| 332 | # undef getpeername | ||
| 333 | # if HAVE_RAW_DECL_GETPEERNAME | ||
| 334 | _GL_WARN_ON_USE (getpeername, "getpeername is not always POSIX compliant - " | ||
| 335 | "use gnulib module getpeername for portability"); | ||
| 336 | # endif | ||
| 337 | #endif | ||
| 338 | |||
| 339 | #if @GNULIB_GETSOCKNAME@ | ||
| 340 | # if @HAVE_WINSOCK2_H@ | ||
| 341 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 260 | # undef getsockname | 342 | # undef getsockname |
| 261 | # define getsockname rpl_getsockname | 343 | # define getsockname rpl_getsockname |
| 262 | extern int rpl_getsockname (int, struct sockaddr *, int *); | ||
| 263 | # endif | 344 | # endif |
| 264 | # elif @HAVE_WINSOCK2_H@ | 345 | _GL_FUNCDECL_RPL (getsockname, int, |
| 265 | # undef getsockname | 346 | (int fd, struct sockaddr *addr, socklen_t *addrlen) |
| 266 | # define getsockname getsockname_used_without_requesting_gnulib_module_getsockname | 347 | _GL_ARG_NONNULL ((2, 3))); |
| 267 | # elif defined GNULIB_POSIXCHECK | 348 | _GL_CXXALIAS_RPL (getsockname, int, |
| 268 | # undef getsockname | 349 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); |
| 269 | # define getsockname(s,a,l) \ | 350 | # else |
| 270 | (GL_LINK_WARNING ("getsockname is not always POSIX compliant - " \ | 351 | /* Need to cast, because on Solaris 10 systems, the third parameter is |
| 271 | "use gnulib module getsockname for portability"), \ | 352 | void *addrlen. */ |
| 272 | getsockname (s, a, l)) | 353 | _GL_CXXALIAS_SYS_CAST (getsockname, int, |
| 273 | # endif | 354 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); |
| 274 | 355 | # endif | |
| 275 | # if @GNULIB_GETSOCKOPT@ | 356 | _GL_CXXALIASWARN (getsockname); |
| 276 | # if @HAVE_WINSOCK2_H@ | 357 | #elif @HAVE_WINSOCK2_H@ |
| 358 | # undef getsockname | ||
| 359 | # define getsockname getsockname_used_without_requesting_gnulib_module_getsockname | ||
| 360 | #elif defined GNULIB_POSIXCHECK | ||
| 361 | # undef getsockname | ||
| 362 | # if HAVE_RAW_DECL_GETSOCKNAME | ||
| 363 | _GL_WARN_ON_USE (getsockname, "getsockname is not always POSIX compliant - " | ||
| 364 | "use gnulib module getsockname for portability"); | ||
| 365 | # endif | ||
| 366 | #endif | ||
| 367 | |||
| 368 | #if @GNULIB_GETSOCKOPT@ | ||
| 369 | # if @HAVE_WINSOCK2_H@ | ||
| 370 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 277 | # undef getsockopt | 371 | # undef getsockopt |
| 278 | # define getsockopt rpl_getsockopt | 372 | # define getsockopt rpl_getsockopt |
| 279 | extern int rpl_getsockopt (int, int, int, void *, socklen_t *); | ||
| 280 | # endif | 373 | # endif |
| 281 | # elif @HAVE_WINSOCK2_H@ | 374 | _GL_FUNCDECL_RPL (getsockopt, int, (int fd, int level, int optname, |
| 282 | # undef getsockopt | 375 | void *optval, socklen_t *optlen) |
| 283 | # define getsockopt getsockopt_used_without_requesting_gnulib_module_getsockopt | 376 | _GL_ARG_NONNULL ((4, 5))); |
| 284 | # elif defined GNULIB_POSIXCHECK | 377 | _GL_CXXALIAS_RPL (getsockopt, int, (int fd, int level, int optname, |
| 285 | # undef getsockopt | 378 | void *optval, socklen_t *optlen)); |
| 286 | # define getsockopt(s,lvl,o,v,l) \ | 379 | # else |
| 287 | (GL_LINK_WARNING ("getsockopt is not always POSIX compliant - " \ | 380 | /* Need to cast, because on Solaris 10 systems, the fifth parameter is |
| 288 | "use gnulib module getsockopt for portability"), \ | 381 | void *optlen. */ |
| 289 | getsockopt (s, lvl, o, v, l)) | 382 | _GL_CXXALIAS_SYS_CAST (getsockopt, int, (int fd, int level, int optname, |
| 290 | # endif | 383 | void *optval, socklen_t *optlen)); |
| 291 | 384 | # endif | |
| 292 | # if @GNULIB_LISTEN@ | 385 | _GL_CXXALIASWARN (getsockopt); |
| 293 | # if @HAVE_WINSOCK2_H@ | 386 | #elif @HAVE_WINSOCK2_H@ |
| 387 | # undef getsockopt | ||
| 388 | # define getsockopt getsockopt_used_without_requesting_gnulib_module_getsockopt | ||
| 389 | #elif defined GNULIB_POSIXCHECK | ||
| 390 | # undef getsockopt | ||
| 391 | # if HAVE_RAW_DECL_GETSOCKOPT | ||
| 392 | _GL_WARN_ON_USE (getsockopt, "getsockopt is not always POSIX compliant - " | ||
| 393 | "use gnulib module getsockopt for portability"); | ||
| 394 | # endif | ||
| 395 | #endif | ||
| 396 | |||
| 397 | #if @GNULIB_LISTEN@ | ||
| 398 | # if @HAVE_WINSOCK2_H@ | ||
| 399 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 294 | # undef listen | 400 | # undef listen |
| 295 | # define listen rpl_listen | 401 | # define listen rpl_listen |
| 296 | extern int rpl_listen (int, int); | ||
| 297 | # endif | 402 | # endif |
| 298 | # elif @HAVE_WINSOCK2_H@ | 403 | _GL_FUNCDECL_RPL (listen, int, (int fd, int backlog)); |
| 299 | # undef listen | 404 | _GL_CXXALIAS_RPL (listen, int, (int fd, int backlog)); |
| 300 | # define listen listen_used_without_requesting_gnulib_module_listen | 405 | # else |
| 301 | # elif defined GNULIB_POSIXCHECK | 406 | _GL_CXXALIAS_SYS (listen, int, (int fd, int backlog)); |
| 302 | # undef listen | 407 | # endif |
| 303 | # define listen(s,b) \ | 408 | _GL_CXXALIASWARN (listen); |
| 304 | (GL_LINK_WARNING ("listen is not always POSIX compliant - " \ | 409 | #elif @HAVE_WINSOCK2_H@ |
| 305 | "use gnulib module listen for portability"), \ | 410 | # undef listen |
| 306 | listen (s, b)) | 411 | # define listen listen_used_without_requesting_gnulib_module_listen |
| 307 | # endif | 412 | #elif defined GNULIB_POSIXCHECK |
| 308 | 413 | # undef listen | |
| 309 | # if @GNULIB_RECV@ | 414 | # if HAVE_RAW_DECL_LISTEN |
| 310 | # if @HAVE_WINSOCK2_H@ | 415 | _GL_WARN_ON_USE (listen, "listen is not always POSIX compliant - " |
| 416 | "use gnulib module listen for portability"); | ||
| 417 | # endif | ||
| 418 | #endif | ||
| 419 | |||
| 420 | #if @GNULIB_RECV@ | ||
| 421 | # if @HAVE_WINSOCK2_H@ | ||
| 422 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 311 | # undef recv | 423 | # undef recv |
| 312 | # define recv rpl_recv | 424 | # define recv rpl_recv |
| 313 | extern int rpl_recv (int, void *, int, int); | ||
| 314 | # endif | 425 | # endif |
| 315 | # elif @HAVE_WINSOCK2_H@ | 426 | _GL_FUNCDECL_RPL (recv, ssize_t, (int fd, void *buf, size_t len, int flags) |
| 316 | # undef recv | 427 | _GL_ARG_NONNULL ((2))); |
| 317 | # define recv recv_used_without_requesting_gnulib_module_recv | 428 | _GL_CXXALIAS_RPL (recv, ssize_t, (int fd, void *buf, size_t len, int flags)); |
| 318 | # elif defined GNULIB_POSIXCHECK | 429 | # else |
| 319 | # undef recv | 430 | _GL_CXXALIAS_SYS (recv, ssize_t, (int fd, void *buf, size_t len, int flags)); |
| 320 | # define recv(s,b,n,f) \ | 431 | # endif |
| 321 | (GL_LINK_WARNING ("recv is not always POSIX compliant - " \ | 432 | _GL_CXXALIASWARN (recv); |
| 322 | "use gnulib module recv for portability"), \ | 433 | #elif @HAVE_WINSOCK2_H@ |
| 323 | recv (s, b, n, f)) | 434 | # undef recv |
| 324 | # endif | 435 | # define recv recv_used_without_requesting_gnulib_module_recv |
| 325 | 436 | #elif defined GNULIB_POSIXCHECK | |
| 326 | # if @GNULIB_SEND@ | 437 | # undef recv |
| 327 | # if @HAVE_WINSOCK2_H@ | 438 | # if HAVE_RAW_DECL_RECV |
| 439 | _GL_WARN_ON_USE (recv, "recv is not always POSIX compliant - " | ||
| 440 | "use gnulib module recv for portability"); | ||
| 441 | # endif | ||
| 442 | #endif | ||
| 443 | |||
| 444 | #if @GNULIB_SEND@ | ||
| 445 | # if @HAVE_WINSOCK2_H@ | ||
| 446 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 328 | # undef send | 447 | # undef send |
| 329 | # define send rpl_send | 448 | # define send rpl_send |
| 330 | extern int rpl_send (int, const void *, int, int); | ||
| 331 | # endif | 449 | # endif |
| 332 | # elif @HAVE_WINSOCK2_H@ | 450 | _GL_FUNCDECL_RPL (send, ssize_t, |
| 333 | # undef send | 451 | (int fd, const void *buf, size_t len, int flags) |
| 334 | # define send send_used_without_requesting_gnulib_module_send | 452 | _GL_ARG_NONNULL ((2))); |
| 335 | # elif defined GNULIB_POSIXCHECK | 453 | _GL_CXXALIAS_RPL (send, ssize_t, |
| 336 | # undef send | 454 | (int fd, const void *buf, size_t len, int flags)); |
| 337 | # define send(s,b,n,f) \ | 455 | # else |
| 338 | (GL_LINK_WARNING ("send is not always POSIX compliant - " \ | 456 | _GL_CXXALIAS_SYS (send, ssize_t, |
| 339 | "use gnulib module send for portability"), \ | 457 | (int fd, const void *buf, size_t len, int flags)); |
| 340 | send (s, b, n, f)) | 458 | # endif |
| 341 | # endif | 459 | _GL_CXXALIASWARN (send); |
| 342 | 460 | #elif @HAVE_WINSOCK2_H@ | |
| 343 | # if @GNULIB_RECVFROM@ | 461 | # undef send |
| 344 | # if @HAVE_WINSOCK2_H@ | 462 | # define send send_used_without_requesting_gnulib_module_send |
| 463 | #elif defined GNULIB_POSIXCHECK | ||
| 464 | # undef send | ||
| 465 | # if HAVE_RAW_DECL_SEND | ||
| 466 | _GL_WARN_ON_USE (send, "send is not always POSIX compliant - " | ||
| 467 | "use gnulib module send for portability"); | ||
| 468 | # endif | ||
| 469 | #endif | ||
| 470 | |||
| 471 | #if @GNULIB_RECVFROM@ | ||
| 472 | # if @HAVE_WINSOCK2_H@ | ||
| 473 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 345 | # undef recvfrom | 474 | # undef recvfrom |
| 346 | # define recvfrom rpl_recvfrom | 475 | # define recvfrom rpl_recvfrom |
| 347 | extern int rpl_recvfrom (int, void *, int, int, struct sockaddr *, int *); | ||
| 348 | # endif | 476 | # endif |
| 349 | # elif @HAVE_WINSOCK2_H@ | 477 | _GL_FUNCDECL_RPL (recvfrom, ssize_t, |
| 350 | # undef recvfrom | 478 | (int fd, void *buf, size_t len, int flags, |
| 351 | # define recvfrom recvfrom_used_without_requesting_gnulib_module_recvfrom | 479 | struct sockaddr *from, socklen_t *fromlen) |
| 352 | # elif defined GNULIB_POSIXCHECK | 480 | _GL_ARG_NONNULL ((2))); |
| 353 | # undef recvfrom | 481 | _GL_CXXALIAS_RPL (recvfrom, ssize_t, |
| 354 | # define recvfrom(s,b,n,f,a,l) \ | 482 | (int fd, void *buf, size_t len, int flags, |
| 355 | (GL_LINK_WARNING ("recvfrom is not always POSIX compliant - " \ | 483 | struct sockaddr *from, socklen_t *fromlen)); |
| 356 | "use gnulib module recvfrom for portability"), \ | 484 | # else |
| 357 | recvfrom (s, b, n, f, a, l)) | 485 | /* Need to cast, because on Solaris 10 systems, the sixth parameter is |
| 358 | # endif | 486 | void *fromlen. */ |
| 359 | 487 | _GL_CXXALIAS_SYS_CAST (recvfrom, ssize_t, | |
| 360 | # if @GNULIB_SENDTO@ | 488 | (int fd, void *buf, size_t len, int flags, |
| 361 | # if @HAVE_WINSOCK2_H@ | 489 | struct sockaddr *from, socklen_t *fromlen)); |
| 490 | # endif | ||
| 491 | _GL_CXXALIASWARN (recvfrom); | ||
| 492 | #elif @HAVE_WINSOCK2_H@ | ||
| 493 | # undef recvfrom | ||
| 494 | # define recvfrom recvfrom_used_without_requesting_gnulib_module_recvfrom | ||
| 495 | #elif defined GNULIB_POSIXCHECK | ||
| 496 | # undef recvfrom | ||
| 497 | # if HAVE_RAW_DECL_RECVFROM | ||
| 498 | _GL_WARN_ON_USE (recvfrom, "recvfrom is not always POSIX compliant - " | ||
| 499 | "use gnulib module recvfrom for portability"); | ||
| 500 | # endif | ||
| 501 | #endif | ||
| 502 | |||
| 503 | #if @GNULIB_SENDTO@ | ||
| 504 | # if @HAVE_WINSOCK2_H@ | ||
| 505 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 362 | # undef sendto | 506 | # undef sendto |
| 363 | # define sendto rpl_sendto | 507 | # define sendto rpl_sendto |
| 364 | extern int rpl_sendto (int, const void *, int, int, struct sockaddr *, int); | ||
| 365 | # endif | 508 | # endif |
| 366 | # elif @HAVE_WINSOCK2_H@ | 509 | _GL_FUNCDECL_RPL (sendto, ssize_t, |
| 367 | # undef sendto | 510 | (int fd, const void *buf, size_t len, int flags, |
| 368 | # define sendto sendto_used_without_requesting_gnulib_module_sendto | 511 | const struct sockaddr *to, socklen_t tolen) |
| 369 | # elif defined GNULIB_POSIXCHECK | 512 | _GL_ARG_NONNULL ((2))); |
| 370 | # undef sendto | 513 | _GL_CXXALIAS_RPL (sendto, ssize_t, |
| 371 | # define sendto(s,b,n,f,a,l) \ | 514 | (int fd, const void *buf, size_t len, int flags, |
| 372 | (GL_LINK_WARNING ("sendto is not always POSIX compliant - " \ | 515 | const struct sockaddr *to, socklen_t tolen)); |
| 373 | "use gnulib module sendto for portability"), \ | 516 | # else |
| 374 | sendto (s, b, n, f, a, l)) | 517 | _GL_CXXALIAS_SYS (sendto, ssize_t, |
| 375 | # endif | 518 | (int fd, const void *buf, size_t len, int flags, |
| 376 | 519 | const struct sockaddr *to, socklen_t tolen)); | |
| 377 | # if @GNULIB_SETSOCKOPT@ | 520 | # endif |
| 378 | # if @HAVE_WINSOCK2_H@ | 521 | _GL_CXXALIASWARN (sendto); |
| 522 | #elif @HAVE_WINSOCK2_H@ | ||
| 523 | # undef sendto | ||
| 524 | # define sendto sendto_used_without_requesting_gnulib_module_sendto | ||
| 525 | #elif defined GNULIB_POSIXCHECK | ||
| 526 | # undef sendto | ||
| 527 | # if HAVE_RAW_DECL_SENDTO | ||
| 528 | _GL_WARN_ON_USE (sendto, "sendto is not always POSIX compliant - " | ||
| 529 | "use gnulib module sendto for portability"); | ||
| 530 | # endif | ||
| 531 | #endif | ||
| 532 | |||
| 533 | #if @GNULIB_SETSOCKOPT@ | ||
| 534 | # if @HAVE_WINSOCK2_H@ | ||
| 535 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 379 | # undef setsockopt | 536 | # undef setsockopt |
| 380 | # define setsockopt rpl_setsockopt | 537 | # define setsockopt rpl_setsockopt |
| 381 | extern int rpl_setsockopt (int, int, int, const void *, socklen_t); | ||
| 382 | # endif | 538 | # endif |
| 383 | # elif @HAVE_WINSOCK2_H@ | 539 | _GL_FUNCDECL_RPL (setsockopt, int, (int fd, int level, int optname, |
| 384 | # undef setsockopt | 540 | const void * optval, socklen_t optlen) |
| 385 | # define setsockopt setsockopt_used_without_requesting_gnulib_module_setsockopt | 541 | _GL_ARG_NONNULL ((4))); |
| 386 | # elif defined GNULIB_POSIXCHECK | 542 | _GL_CXXALIAS_RPL (setsockopt, int, (int fd, int level, int optname, |
| 387 | # undef setsockopt | 543 | const void * optval, socklen_t optlen)); |
| 388 | # define setsockopt(s,lvl,o,v,l) \ | 544 | # else |
| 389 | (GL_LINK_WARNING ("setsockopt is not always POSIX compliant - " \ | 545 | _GL_CXXALIAS_SYS (setsockopt, int, (int fd, int level, int optname, |
| 390 | "use gnulib module setsockopt for portability"), \ | 546 | const void * optval, socklen_t optlen)); |
| 391 | setsockopt (s, lvl, o, v, l)) | 547 | # endif |
| 392 | # endif | 548 | _GL_CXXALIASWARN (setsockopt); |
| 393 | 549 | #elif @HAVE_WINSOCK2_H@ | |
| 394 | # if @GNULIB_SHUTDOWN@ | 550 | # undef setsockopt |
| 395 | # if @HAVE_WINSOCK2_H@ | 551 | # define setsockopt setsockopt_used_without_requesting_gnulib_module_setsockopt |
| 552 | #elif defined GNULIB_POSIXCHECK | ||
| 553 | # undef setsockopt | ||
| 554 | # if HAVE_RAW_DECL_SETSOCKOPT | ||
| 555 | _GL_WARN_ON_USE (setsockopt, "setsockopt is not always POSIX compliant - " | ||
| 556 | "use gnulib module setsockopt for portability"); | ||
| 557 | # endif | ||
| 558 | #endif | ||
| 559 | |||
| 560 | #if @GNULIB_SHUTDOWN@ | ||
| 561 | # if @HAVE_WINSOCK2_H@ | ||
| 562 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 396 | # undef shutdown | 563 | # undef shutdown |
| 397 | # define shutdown rpl_shutdown | 564 | # define shutdown rpl_shutdown |
| 398 | extern int rpl_shutdown (int, int); | ||
| 399 | # endif | 565 | # endif |
| 400 | # elif @HAVE_WINSOCK2_H@ | 566 | _GL_FUNCDECL_RPL (shutdown, int, (int fd, int how)); |
| 401 | # undef shutdown | 567 | _GL_CXXALIAS_RPL (shutdown, int, (int fd, int how)); |
| 402 | # define shutdown shutdown_used_without_requesting_gnulib_module_shutdown | 568 | # else |
| 403 | # elif defined GNULIB_POSIXCHECK | 569 | _GL_CXXALIAS_SYS (shutdown, int, (int fd, int how)); |
| 404 | # undef shutdown | 570 | # endif |
| 405 | # define shutdown(s,h) \ | 571 | _GL_CXXALIASWARN (shutdown); |
| 406 | (GL_LINK_WARNING ("shutdown is not always POSIX compliant - " \ | 572 | #elif @HAVE_WINSOCK2_H@ |
| 407 | "use gnulib module shutdown for portability"), \ | 573 | # undef shutdown |
| 408 | shutdown (s, h)) | 574 | # define shutdown shutdown_used_without_requesting_gnulib_module_shutdown |
| 575 | #elif defined GNULIB_POSIXCHECK | ||
| 576 | # undef shutdown | ||
| 577 | # if HAVE_RAW_DECL_SHUTDOWN | ||
| 578 | _GL_WARN_ON_USE (shutdown, "shutdown is not always POSIX compliant - " | ||
| 579 | "use gnulib module shutdown for portability"); | ||
| 409 | # endif | 580 | # endif |
| 581 | #endif | ||
| 410 | 582 | ||
| 411 | # if @HAVE_WINSOCK2_H@ | 583 | #if @HAVE_WINSOCK2_H@ |
| 584 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 412 | # undef select | 585 | # undef select |
| 413 | # define select select_used_without_including_sys_select_h | 586 | # define select select_used_without_including_sys_select_h |
| 587 | # else | ||
| 588 | _GL_WARN_ON_USE (select, | ||
| 589 | "select() used without including <sys/select.h>"); | ||
| 414 | # endif | 590 | # endif |
| 591 | #endif | ||
| 415 | 592 | ||
| 416 | # ifdef __cplusplus | 593 | #if @GNULIB_ACCEPT4@ |
| 417 | } | 594 | /* Accept a connection on a socket, with specific opening flags. |
| 595 | The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>) | ||
| 596 | and O_TEXT, O_BINARY (defined in "binary-io.h"). | ||
| 597 | See also the Linux man page at | ||
| 598 | <http://www.kernel.org/doc/man-pages/online/pages/man2/accept4.2.html>. */ | ||
| 599 | # if @HAVE_ACCEPT4@ | ||
| 600 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 601 | # define accept4 rpl_accept4 | ||
| 602 | # endif | ||
| 603 | _GL_FUNCDECL_RPL (accept4, int, | ||
| 604 | (int sockfd, struct sockaddr *addr, socklen_t *addrlen, | ||
| 605 | int flags)); | ||
| 606 | _GL_CXXALIAS_RPL (accept4, int, | ||
| 607 | (int sockfd, struct sockaddr *addr, socklen_t *addrlen, | ||
| 608 | int flags)); | ||
| 609 | # else | ||
| 610 | _GL_FUNCDECL_SYS (accept4, int, | ||
| 611 | (int sockfd, struct sockaddr *addr, socklen_t *addrlen, | ||
| 612 | int flags)); | ||
| 613 | _GL_CXXALIAS_SYS (accept4, int, | ||
| 614 | (int sockfd, struct sockaddr *addr, socklen_t *addrlen, | ||
| 615 | int flags)); | ||
| 418 | # endif | 616 | # endif |
| 419 | 617 | _GL_CXXALIASWARN (accept4); | |
| 420 | #endif /* HAVE_SYS_SOCKET_H */ | 618 | #elif defined GNULIB_POSIXCHECK |
| 619 | # undef accept4 | ||
| 620 | # if HAVE_RAW_DECL_ACCEPT4 | ||
| 621 | _GL_WARN_ON_USE (accept4, "accept4 is unportable - " | ||
| 622 | "use gnulib module accept4 for portability"); | ||
| 623 | # endif | ||
| 624 | #endif | ||
| 421 | 625 | ||
| 422 | #endif /* _GL_SYS_SOCKET_H */ | 626 | #endif /* _GL_SYS_SOCKET_H */ |
| 423 | #endif /* _GL_SYS_SOCKET_H */ | 627 | #endif /* _GL_SYS_SOCKET_H */ |
| 628 | #endif | ||
