From e2685c5b7c705225200244900d335bfec5b16d6c Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Thu, 12 Oct 2017 23:47:39 -0500 Subject: [PATCH] Add check for getpw*_r() --- cf/check-getpwnam_r-posix.m4 | 36 +++++++++++++++++++++++++++++++++++- include/config.h.w32 | 6 ++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/cf/check-getpwnam_r-posix.m4 b/cf/check-getpwnam_r-posix.m4 index aab9eaf5c..0e9167f07 100644 --- a/cf/check-getpwnam_r-posix.m4 +++ b/cf/check-getpwnam_r-posix.m4 @@ -1,6 +1,6 @@ dnl $Id$ dnl -dnl check for getpwnam_r, and if it's posix or not +dnl check for getpwnam_r, and if it's posix or not; also check for getpwuid_r AC_DEFUN([AC_CHECK_GETPWNAM_R_POSIX],[ AC_FIND_FUNC_NO_LIBS(getpwnam_r,c_r) @@ -38,3 +38,37 @@ if test "$ac_cv_func_getpwnam_r_posix" = yes -a "$ac_cv_func_getpwnam_r_posix_de fi fi ]) + +AC_DEFUN([AC_CHECK_GETPWUID_R_POSIX],[ +AC_FIND_FUNC_NO_LIBS(getpwuid_r,c_r) +if test "$ac_cv_func_getpwuid_r" = yes; then + AC_CACHE_CHECK(if getpwuid_r is posix,ac_cv_func_getpwuid_r_posix, + ac_libs="$LIBS" + LIBS="$LIBS $LIB_getpwuid_r" + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#define _POSIX_PTHREAD_SEMANTICS +#include +int main(int argc, char **argv) +{ + struct passwd pw, *pwd; + return getpwuid_r(0, &pw, 0, 0, &pwd) < 0; +} +]])],[ac_cv_func_getpwuid_r_posix=yes],[ac_cv_func_getpwuid_r_posix=no],[:]) +LIBS="$ac_libs") + AC_CACHE_CHECK(if _POSIX_PTHREAD_SEMANTICS is needed,ac_cv_func_getpwuid_r_posix_def, + ac_libs="$LIBS" + LIBS="$LIBS $LIB_getpwuid_r" + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +int main(int argc, char **argv) +{ + struct passwd pw, *pwd; + return getpwuid_r("", &pw, 0, 0, &pwd) < 0; +} +]])],[ac_cv_func_getpwuid_r_posix_def=no],[ac_cv_func_getpwuid_r_posix_def=yes],[:]) +LIBS="$ac_libs") +if test "$ac_cv_func_getpwuid_r_posix" = yes; then + AC_DEFINE(POSIX_GETPWUID_R, 1, [Define if getpwuid_r has POSIX flavour.]) +fi +fi +]) diff --git a/include/config.h.w32 b/include/config.h.w32 index 103c41f7b..90eaeb91c 100644 --- a/include/config.h.w32 +++ b/include/config.h.w32 @@ -454,6 +454,9 @@ static const char *const rcsid[] = { (const char *)rcsid, "@(#)" msg } /* Define to 1 if you have the `getpwnam_r' function. */ /* #define HAVE_GETPWNAM_R 1 */ +/* Define to 1 if you have the `getpwuid_r' function. */ +/* #define HAVE_GETPWUID_R 1 */ + /* Define to 1 if you have the `getrlimit' function. */ /* #define HAVE_GETRLIMIT 1 */ @@ -1366,6 +1369,9 @@ static const char *const rcsid[] = { (const char *)rcsid, "@(#)" msg } /* Define if getpwnam_r has POSIX flavour. */ /* #define POSIX_GETPWNAM_R 1 */ +/* Define if getpwnam_r has POSIX flavour. */ +/* #define POSIX_GETPWUID_R 1 */ + /* Define if you have the readline package. */ #define READLINE 1