PR 47802 Test for POSIX getpwuid_r
authorJanne Blomqvist <jb@gcc.gnu.org>
Thu, 24 Feb 2011 14:51:17 +0000 (16:51 +0200)
committerJanne Blomqvist <jb@gcc.gnu.org>
Thu, 24 Feb 2011 14:51:17 +0000 (16:51 +0200)
From-SVN: r170471

libgfortran/ChangeLog
libgfortran/config.h.in
libgfortran/configure
libgfortran/configure.ac
libgfortran/intrinsics/getlog.c

index 1de3474efa88a0a4b83bc82907009f0153f1d009..0b0a27e9c8e6b874cdba11fcb28c6d1b22c9b1ab 100644 (file)
@@ -1,3 +1,12 @@
+2011-02-24  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       PR libfortran/47802
+       * configure.ac: Add test for POSIX getpwuid_r.
+       * intrinsics/getlog.c (getlog): CPP test for
+       HAVE_POSIX_GETPWUID_R.
+       * config.h.in: Regenerated.
+       * configure: Regenerated.
+
 2011-02-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libgfortran/47567
index fdf502b870c0551432f7470d0e5b8cb2dd0c0459..67fb5f075a70b75f84a0ebe945987473b0eb2521 100644 (file)
 /* Define to 1 if you have the `pipe' function. */
 #undef HAVE_PIPE
 
+/* Define to 1 if we have POSIX getpwuid_r which takes 5 arguments. */
+#undef HAVE_POSIX_GETPWUID_R
+
 /* libm includes pow */
 #undef HAVE_POW
 
index 9d3c891ca80ffd56bc9e26222d5d804616e68a89..834bd8c51be185ed9481b422cd71391e0bec3ac4 100755 (executable)
@@ -25428,6 +25428,56 @@ FPU_HOST_HEADER=config/${fpu_host}.h
 IEEE_FLAGS="${ieee_flags}"
 
 
+
+# Check for POSIX getpwuid_r
+#
+# There are two versions of getpwuid_r, the POSIX one with 5
+# arguments, and another one with 4 arguments used by at least HP-UX
+# 10.2.
+if test "$ac_cv_func_getpwuid_r" = "yes"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking POSIX version of getpwuid_r with 5 arguments" >&5
+$as_echo_n "checking POSIX version of getpwuid_r with 5 arguments... " >&6; }
+if test "${libgfor_cv_posix_getpwuid_r+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+   if test x$gcc_no_link = xyes; then
+  as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <pwd.h>
+int
+main ()
+{
+
+    getpwuid_r(0, NULL, NULL, 0, NULL);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  libgfor_cv_posix_getpwuid_r="yes"
+else
+  libgfor_cv_posix_getpwuid_r="no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgfor_cv_posix_getpwuid_r" >&5
+$as_echo "$libgfor_cv_posix_getpwuid_r" >&6; }
+fi
+if test "$libgfor_cv_posix_getpwuid_r" = "yes"; then
+
+$as_echo "#define HAVE_POSIX_GETPWUID_R 1" >>confdefs.h
+
+fi
+
+
 # Check out attribute support.
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports hidden visibility" >&5
index 816165988ce7006aa5637b4d552164bec9c30c74..d25a067e127b59657ff04ef7fcabb90412d3f447 100644 (file)
@@ -513,6 +513,26 @@ AC_SUBST(FPU_HOST_HEADER)
 IEEE_FLAGS="${ieee_flags}"
 AC_SUBST(IEEE_FLAGS)
 
+
+# Check for POSIX getpwuid_r 
+#
+# There are two versions of getpwuid_r, the POSIX one with 5
+# arguments, and another one with 4 arguments used by at least HP-UX
+# 10.2.
+if test "$ac_cv_func_getpwuid_r" = "yes"; then
+   AC_CACHE_CHECK([POSIX version of getpwuid_r with 5 arguments], libgfor_cv_posix_getpwuid_r, [
+   AC_LINK_IFELSE([AC_LANG_PROGRAM([
+#include <stdio.h>
+#include <sys/types.h>
+#include <pwd.h>], [
+    getpwuid_r(0, NULL, NULL, 0, NULL);
+    ])],  [libgfor_cv_posix_getpwuid_r="yes"], [libgfor_cv_posix_getpwuid_r="no"])])
+fi
+if test "$libgfor_cv_posix_getpwuid_r" = "yes"; then
+    AC_DEFINE([HAVE_POSIX_GETPWUID_R], [1], [Define to 1 if we have POSIX getpwuid_r which takes 5 arguments.])
+fi
+
+
 # Check out attribute support.
 LIBGFOR_CHECK_ATTRIBUTE_VISIBILITY
 LIBGFOR_CHECK_ATTRIBUTE_DLLEXPORT
index 299ac5a368d58c1189158ac4171d3d44ed72630f..9e5c8de4677463175d82f05197b2effd6684cb99 100644 (file)
@@ -75,7 +75,7 @@ PREFIX(getlog) (char * login, gfc_charlen_type login_len)
 
   memset (login, ' ', login_len); /* Blank the string.  */
 
-#if defined(HAVE_GETPWUID_R) && defined(HAVE_GETEUID)
+#if defined(HAVE_POSIX_GETPWUID_R) && defined(HAVE_GETEUID)
   struct passwd pwd;
   struct passwd *result;
   char *buf;
@@ -113,7 +113,7 @@ PREFIX(getlog) (char * login, gfc_charlen_type login_len)
   memcpy (login, p, p_len);
 
  cleanup:
-#ifdef HAVE_GETPWUID_R
+#if defined (HAVE_POSIX_GETPWUID_R) && defined(HAVE_GETEUID)
   free (buf);
 #else
   ;