Back to the Main Page. | Download the M4 Source. |
AC_raf_FUNC_WHICH_GETSERVBYNAME_R
1.1 (2001/08/25) Miscellaneous @ ac-archive-0.5.39
raf <raf@raf.org>
Provides a test to determine the correct way to call getservbyname_r:
- defines HAVE_FUNC_GETSERVBYNAME_R_6 if it needs 6 arguments (e.g linux)
- defines HAVE_FUNC_GETSERVBYNAME_R_5 if it needs 5 arguments (e.g. solaris)
- defines HAVE_FUNC_GETSERVBYNAME_R_4 if it needs 4 arguments (e.g. osf/1)
An example use can be found at http://raf.org/autoconf/net_getservbyname.c
Based on Caolan McNamara's gethostbyname_r macro. Based on David Arnold's autoconf suggestion in the threads faq.
AC_DEFUN([AC_raf_FUNC_WHICH_GETSERVBYNAME_R], [AC_CACHE_CHECK(for getservbyname_r, ac_cv_func_which_getservbyname_r, [ AC_CHECK_FUNC(getservbyname_r, [ AC_TRY_COMPILE([ # include <netdb.h> ], [ char *name; char *proto; struct servent *se; struct servent_data data; (void) getservbyname_r(name, proto, se, &data); ],ac_cv_func_which_getservbyname_r=four, [ AC_TRY_COMPILE([ # include <netdb.h> ], [ char *name; char *proto; struct servent *se, *res; char buffer[2048]; int buflen = 2048; (void) getservbyname_r(name, proto, se, buffer, buflen, &res) ],ac_cv_func_which_getservbyname_r=six, [ AC_TRY_COMPILE([ # include <netdb.h> ], [ char *name; char *proto; struct servent *se; char buffer[2048]; int buflen = 2048; (void) getservbyname_r(name, proto, se, buffer, buflen) ],ac_cv_func_which_getservbyname_r=five,ac_cv_func_which_getservbyname_r=no) ] ) ] )] ,ac_cv_func_which_getservbyname_r=no)]) if test $ac_cv_func_which_getservbyname_r = six; then AC_DEFINE(HAVE_FUNC_GETSERVBYNAME_R_6) elif test $ac_cv_func_which_getservbyname_r = five; then AC_DEFINE(HAVE_FUNC_GETSERVBYNAME_R_5) elif test $ac_cv_func_which_getservbyname_r = four; then AC_DEFINE(HAVE_FUNC_GETSERVBYNAME_R_4) fi ])