diff options
Diffstat (limited to 'gl/sys_socket.in.h')
-rw-r--r-- | gl/sys_socket.in.h | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/gl/sys_socket.in.h b/gl/sys_socket.in.h index 5d9b3cdb..dadd56ac 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-2008 Free Software Foundation, Inc. | 3 | Copyright (C) 2005-2009 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 |
@@ -43,6 +43,26 @@ | |||
43 | #ifndef _GL_SYS_SOCKET_H | 43 | #ifndef _GL_SYS_SOCKET_H |
44 | #define _GL_SYS_SOCKET_H | 44 | #define _GL_SYS_SOCKET_H |
45 | 45 | ||
46 | #if !@HAVE_STRUCT_SOCKADDR_STORAGE@ | ||
47 | # include <alignof.h> | ||
48 | /* Code taken from glibc sysdeps/unix/sysv/linux/bits/socket.h on | ||
49 | 2009-05-08, licensed under LGPLv2.1+, plus portability fixes. */ | ||
50 | # define __ss_aligntype unsigned long int | ||
51 | # define _SS_SIZE 256 | ||
52 | # define _SS_PADSIZE \ | ||
53 | (_SS_SIZE - ((sizeof (sa_family_t) >= alignof (__ss_aligntype) \ | ||
54 | ? sizeof (sa_family_t) \ | ||
55 | : alignof (__ss_aligntype)) \ | ||
56 | + sizeof (__ss_aligntype))) | ||
57 | |||
58 | struct sockaddr_storage | ||
59 | { | ||
60 | sa_family_t ss_family; /* Address family, etc. */ | ||
61 | __ss_aligntype __ss_align; /* Force desired alignment. */ | ||
62 | char __ss_padding[_SS_PADSIZE]; | ||
63 | }; | ||
64 | #endif | ||
65 | |||
46 | #if @HAVE_SYS_SOCKET_H@ | 66 | #if @HAVE_SYS_SOCKET_H@ |
47 | 67 | ||
48 | /* A platform that has <sys/socket.h>. */ | 68 | /* A platform that has <sys/socket.h>. */ |
@@ -256,7 +276,7 @@ extern int rpl_getsockname (int, struct sockaddr *, int *); | |||
256 | # if @HAVE_WINSOCK2_H@ | 276 | # if @HAVE_WINSOCK2_H@ |
257 | # undef getsockopt | 277 | # undef getsockopt |
258 | # define getsockopt rpl_getsockopt | 278 | # define getsockopt rpl_getsockopt |
259 | extern int rpl_getsockopt (int, int, int, void *, int *); | 279 | extern int rpl_getsockopt (int, int, int, void *, socklen_t *); |
260 | # endif | 280 | # endif |
261 | # elif @HAVE_WINSOCK2_H@ | 281 | # elif @HAVE_WINSOCK2_H@ |
262 | # undef getsockopt | 282 | # undef getsockopt |
@@ -358,7 +378,7 @@ extern int rpl_sendto (int, const void *, int, int, struct sockaddr *, int); | |||
358 | # if @HAVE_WINSOCK2_H@ | 378 | # if @HAVE_WINSOCK2_H@ |
359 | # undef setsockopt | 379 | # undef setsockopt |
360 | # define setsockopt rpl_setsockopt | 380 | # define setsockopt rpl_setsockopt |
361 | extern int rpl_setsockopt (int, int, int, const void *, int); | 381 | extern int rpl_setsockopt (int, int, int, const void *, socklen_t); |
362 | # endif | 382 | # endif |
363 | # elif @HAVE_WINSOCK2_H@ | 383 | # elif @HAVE_WINSOCK2_H@ |
364 | # undef setsockopt | 384 | # undef setsockopt |