diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2014-09-12 05:13:16 -0400 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2014-09-15 13:56:57 -0400 |
commit | 20b6f6ba12755632bb639a40e030b79b65b78549 (patch) | |
tree | 5778c842ea1dc464bdbaea986352065125a398d5 | |
parent | d17e43047a65f5bfced18a8fbbd52ff635d4ff02 (diff) | |
download | nfs-utils-20b6f6ba12755632bb639a40e030b79b65b78549.tar.gz nfs-utils-20b6f6ba12755632bb639a40e030b79b65b78549.tar.xz nfs-utils-20b6f6ba12755632bb639a40e030b79b65b78549.zip |
Allow usage of getrpcbynumber() when getrpcbynumber_r() is unavailable
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | support/nfs/svc_socket.c | 15 |
2 files changed, 13 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac index b9682ed..bc48373 100644 --- a/configure.ac +++ b/configure.ac @@ -248,9 +248,6 @@ AC_CHECK_FUNC([connect], , AC_CHECK_FUNC([getaddrinfo], , [AC_MSG_ERROR([Function 'getaddrinfo' not found.])]) -AC_CHECK_FUNC([getrpcbynumber], , - [AC_MSG_ERROR([Function 'getrpcbynumber' not found.])]) - AC_CHECK_FUNC([getservbyname], , [AC_MSG_ERROR([Function 'getservbyname' not found.])]) @@ -409,12 +406,11 @@ AC_FUNC_STAT AC_FUNC_VPRINTF AC_CHECK_FUNCS([alarm atexit dup2 fdatasync ftruncate getcwd \ gethostbyaddr gethostbyname gethostname getmntent \ - getnameinfo getrpcbyname getifaddrs \ + getnameinfo getrpcbyname getrpcbynumber getrpcbynumber_r getifaddrs \ gettimeofday hasmntopt inet_ntoa innetgr memset mkdir pathconf \ ppoll realpath rmdir select socket strcasecmp strchr strdup \ strerror strrchr strtol strtoul sigprocmask name_to_handle_at]) - dnl ************************************************************* dnl Check for data sizes dnl ************************************************************* diff --git a/support/nfs/svc_socket.c b/support/nfs/svc_socket.c index f56f310..74273b9 100644 --- a/support/nfs/svc_socket.c +++ b/support/nfs/svc_socket.c @@ -25,6 +25,8 @@ #include <sys/fcntl.h> #include <errno.h> +#include "config.h" + #ifdef _LIBC # include <libintl.h> #else @@ -37,13 +39,20 @@ int getservport(u_long number, const char *proto) { - char rpcdata[1024], servdata[1024]; - struct rpcent rpcbuf, *rpcp; + char servdata[1024]; + struct rpcent *rpcp; struct servent servbuf, *servp = NULL; - int ret; + int ret = 0; +#if HAVE_GETRPCBYNUMBER_R + char rpcdata[1024]; + struct rpcent rpcbuf; ret = getrpcbynumber_r(number, &rpcbuf, rpcdata, sizeof rpcdata, &rpcp); +#else + rpcp = getrpcbynumber(number); +#endif + if (ret == 0 && rpcp != NULL) { /* First try name. */ ret = getservbyname_r(rpcp->r_name, proto, &servbuf, servdata, |