diff options
-rw-r--r-- | gl/m4/close.m4 | 2 | ||||
-rw-r--r-- | gl/m4/sockets.m4 | 4 | ||||
-rw-r--r-- | gl/tests/sockets.h | 15 | ||||
-rw-r--r-- | gl/tests/test-sockets.c | 4 | ||||
-rw-r--r-- | lib/gl/m4/sockets.m4 | 4 | ||||
-rw-r--r-- | lib/gl/sockets.h | 15 | ||||
-rw-r--r-- | lib/gl/tests/test-sockets.c | 4 |
7 files changed, 42 insertions, 6 deletions
diff --git a/gl/m4/close.m4 b/gl/m4/close.m4 index fcc9fb1952..29d3abdd13 100644 --- a/gl/m4/close.m4 +++ b/gl/m4/close.m4 @@ -22,4 +22,6 @@ AC_DEFUN([gl_REPLACE_CLOSE], fi REPLACE_CLOSE=1 gl_REPLACE_FCLOSE + LIB_CLOSE="-lws2_32" + AC_SUBST([LIB_CLOSE]) ]) diff --git a/gl/m4/sockets.m4 b/gl/m4/sockets.m4 index d5a7dbfb4b..db71bf14a0 100644 --- a/gl/m4/sockets.m4 +++ b/gl/m4/sockets.m4 @@ -1,4 +1,4 @@ -# sockets.m4 serial 4 +# sockets.m4 serial 5 dnl Copyright (C) 2008, 2009 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -6,6 +6,8 @@ dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_SOCKETS], [ + AC_REQUIRE([AC_C_INLINE]) + gl_PREREQ_SYS_H_WINSOCK2 dnl for HAVE_WINSOCK2_H LIBSOCKET= if test $HAVE_WINSOCK2_H = 1; then diff --git a/gl/tests/sockets.h b/gl/tests/sockets.h index 33348db72d..bf180ac95d 100644 --- a/gl/tests/sockets.h +++ b/gl/tests/sockets.h @@ -1,6 +1,6 @@ /* sockets.h - wrappers for Windows socket functions - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,4 +29,17 @@ int gl_sockets_startup (int version); int gl_sockets_cleanup (void); +/* This function is useful it you create a socket using gnulib's + Winsock wrappers but needs to pass on the socket handle to some + other library that only accepts sockets. */ +#if WINDOWS_SOCKETS +static inline SOCKET +gl_fd_to_handle (int fd) +{ + return _get_osfhandle (fd); +} +#else +#define gl_fd_to_handle(x) (x) +#endif + #endif diff --git a/gl/tests/test-sockets.c b/gl/tests/test-sockets.c index 514409d95b..a37a1978c4 100644 --- a/gl/tests/test-sockets.c +++ b/gl/tests/test-sockets.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 Free Software Foundation + * Copyright (C) 2008, 2009 Free Software Foundation * Written by Simon Josefsson. * * This program is free software: you can redistribute it and/or modify @@ -40,5 +40,7 @@ main (int argc, char *argv[]) return 1; } + gl_fd_to_handle (0); + return 0; } diff --git a/lib/gl/m4/sockets.m4 b/lib/gl/m4/sockets.m4 index d5a7dbfb4b..db71bf14a0 100644 --- a/lib/gl/m4/sockets.m4 +++ b/lib/gl/m4/sockets.m4 @@ -1,4 +1,4 @@ -# sockets.m4 serial 4 +# sockets.m4 serial 5 dnl Copyright (C) 2008, 2009 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -6,6 +6,8 @@ dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_SOCKETS], [ + AC_REQUIRE([AC_C_INLINE]) + gl_PREREQ_SYS_H_WINSOCK2 dnl for HAVE_WINSOCK2_H LIBSOCKET= if test $HAVE_WINSOCK2_H = 1; then diff --git a/lib/gl/sockets.h b/lib/gl/sockets.h index f226640a17..6785824bd0 100644 --- a/lib/gl/sockets.h +++ b/lib/gl/sockets.h @@ -1,6 +1,6 @@ /* sockets.h - wrappers for Windows socket functions - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -29,4 +29,17 @@ int gl_sockets_startup (int version); int gl_sockets_cleanup (void); +/* This function is useful it you create a socket using gnulib's + Winsock wrappers but needs to pass on the socket handle to some + other library that only accepts sockets. */ +#if WINDOWS_SOCKETS +static inline SOCKET +gl_fd_to_handle (int fd) +{ + return _get_osfhandle (fd); +} +#else +#define gl_fd_to_handle(x) (x) +#endif + #endif diff --git a/lib/gl/tests/test-sockets.c b/lib/gl/tests/test-sockets.c index 514409d95b..a37a1978c4 100644 --- a/lib/gl/tests/test-sockets.c +++ b/lib/gl/tests/test-sockets.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 Free Software Foundation + * Copyright (C) 2008, 2009 Free Software Foundation * Written by Simon Josefsson. * * This program is free software: you can redistribute it and/or modify @@ -40,5 +40,7 @@ main (int argc, char *argv[]) return 1; } + gl_fd_to_handle (0); + return 0; } |