Do the Windows oldnames workaround through the C++ GNULIB_NAMESPACE.
[gnulib.git] / m4 / servent.m4
blob2041c7e7ad1651d706a0b96a2f713c751c77b968
1 # servent.m4 serial 3
2 dnl Copyright (C) 2008, 2010-2020 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
7 AC_DEFUN([gl_SERVENT],
9   dnl Where are getservent(), setservent(), endservent(), getservbyname(),
10   dnl getservbyport() defined?
11   dnl Where are getprotoent(), setprotoent(), endprotoent(), getprotobyname(),
12   dnl getprotobynumber() defined?
13   dnl - On Solaris < 11.4, they are in libsocket. Ignore libxnet.
14   dnl - On Haiku, they are in libnetwork.
15   dnl - On BeOS, they are in libnet.
16   dnl - On native Windows, they are in ws2_32.dll.
17   dnl - Otherwise they are in libc.
18   AC_REQUIRE([gl_HEADER_SYS_SOCKET])dnl for HAVE_SYS_SOCKET_H, HAVE_WINSOCK2_H
19   SERVENT_LIB=
20   gl_saved_libs="$LIBS"
21   AC_SEARCH_LIBS([getservbyname], [socket network net],
22     [if test "$ac_cv_search_getservbyname" != "none required"; then
23        SERVENT_LIB="$ac_cv_search_getservbyname"
24      fi])
25   LIBS="$gl_saved_libs"
26   if test -z "$SERVENT_LIB"; then
27     AC_CHECK_FUNCS([getservbyname], , [
28       AC_CACHE_CHECK([for getservbyname in winsock2.h and -lws2_32],
29         [gl_cv_w32_getservbyname],
30         [gl_cv_w32_getservbyname=no
31          gl_save_LIBS="$LIBS"
32          LIBS="$LIBS -lws2_32"
33          AC_LINK_IFELSE(
34            [AC_LANG_PROGRAM(
35               [[
36 #ifdef HAVE_WINSOCK2_H
37 #include <winsock2.h>
38 #endif
39 #include <stddef.h>
40               ]],
41               [[getservbyname(NULL,NULL);]])],
42            [gl_cv_w32_getservbyname=yes])
43          LIBS="$gl_save_LIBS"
44         ])
45       if test "$gl_cv_w32_getservbyname" = "yes"; then
46         SERVENT_LIB="-lws2_32"
47       fi
48     ])
49   fi
50   AC_SUBST([SERVENT_LIB])