From: Bruno Haible Date: Sun, 2 Aug 2009 14:43:55 +0000 (+0200) Subject: Implicitly initialize the sockets library. X-Git-Tag: v0.1~5722 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=7525ec925e94b992c31824d266fee528cebc1d16;p=gnulib.git Implicitly initialize the sockets library. --- diff --git a/ChangeLog b/ChangeLog index 3309b7b67..7c3387eb8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,19 @@ 2009-08-02 Bruno Haible + Implicitly initialize the sockets library. + * lib/gethostname.c: Include sockets.h. + (rpl_gethostname): Invoke gl_sockets_startup. + * lib/socket.c: Include sockets.h. + (rpl_socket): Invoke gl_sockets_startup. + * modules/gethostname (Depends-on): Add sockets. + * modules/socket (Depends-on): Likewise. + * tests/test-poll.c: Don't include sockets.h. + (main): Don't invoke gl_sockets_startup. + * tests/test-select.c: Don't include sockets.h. + (main): Don't invoke gl_sockets_startup. + +2009-08-02 Bruno Haible + Allow multiple calls to gl_sockets_startup. * lib/sockets.c (initialized_sockets_version): New variable. (gl_sockets_startup): Do nothing if already called for this or a higher diff --git a/lib/gethostname.c b/lib/gethostname.c index df0bd16e8..35d820685 100644 --- a/lib/gethostname.c +++ b/lib/gethostname.c @@ -82,6 +82,8 @@ gethostname (char *name, size_t len) /* Get set_winsock_errno. */ #include "w32sock.h" +#include "sockets.h" + #undef gethostname int @@ -91,6 +93,7 @@ rpl_gethostname (char *name, size_t len) if (len > INT_MAX) len = INT_MAX; + gl_sockets_startup (SOCKETS_1_1); r = gethostname (name, (int) len); if (r < 0) set_winsock_errno (); diff --git a/lib/socket.c b/lib/socket.c index 1fa692874..8ce4bae8d 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -1,6 +1,6 @@ /* socket.c --- wrappers for Windows socket function - 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 @@ -26,12 +26,18 @@ /* Get set_winsock_errno, FD_TO_SOCKET etc. */ #include "w32sock.h" +#include "sockets.h" + int rpl_socket (int domain, int type, int protocol) { + SOCKET fh; + + gl_sockets_startup (SOCKETS_1_1); + /* We have to use WSASocket() to create non-overlapped IO sockets. Overlapped IO sockets cannot be used with read/write. */ - SOCKET fh = WSASocket (domain, type, protocol, NULL, 0, 0); + fh = WSASocket (domain, type, protocol, NULL, 0, 0); if (fh == INVALID_SOCKET) { diff --git a/modules/gethostname b/modules/gethostname index e21afe6a9..8c2457127 100644 --- a/modules/gethostname +++ b/modules/gethostname @@ -10,6 +10,7 @@ Depends-on: unistd sys_socket errno +sockets configure.ac: gl_FUNC_GETHOSTNAME diff --git a/modules/socket b/modules/socket index 070ba3f2f..b736fd1d3 100644 --- a/modules/socket +++ b/modules/socket @@ -8,6 +8,7 @@ lib/w32sock.h Depends-on: sys_socket errno +sockets configure.ac: AC_REQUIRE([gl_HEADER_SYS_SOCKET]) diff --git a/tests/test-poll.c b/tests/test-poll.c index 77b06d992..d78698e4a 100644 --- a/tests/test-poll.c +++ b/tests/test-poll.c @@ -1,5 +1,5 @@ /* Test of poll() function. - 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 @@ -30,7 +30,6 @@ #include #include #include -#include "sockets.h" #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # define WIN32_NATIVE @@ -360,8 +359,6 @@ main () { int result; - gl_sockets_startup (SOCKETS_1_1); - #ifdef INTERACTIVE printf ("Please press Enter\n"); test (test_tty, "TTY"); diff --git a/tests/test-select.c b/tests/test-select.c index 4c9cdc02d..ec8225014 100644 --- a/tests/test-select.c +++ b/tests/test-select.c @@ -1,5 +1,5 @@ /* Test of select() substitute. - 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,7 +29,6 @@ #include #include #include -#include "sockets.h" enum { SEL_IN = 1, SEL_OUT = 2, SEL_EXC = 4 }; @@ -360,8 +359,6 @@ main () { int result; - gl_sockets_startup (SOCKETS_1_1); - #ifdef INTERACTIVE printf ("Please press Enter\n"); test (test_tty, "TTY");