diff options
author | jb <jb@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-02-24 14:51:17 +0000 |
---|---|---|
committer | jb <jb@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-02-24 14:51:17 +0000 |
commit | d78db4a0363583f7d02b6f70cb234d02a2b6a2d4 (patch) | |
tree | b6bfedfb8d2db2dd774d60a8096f1fcf3d2a6419 /libgfortran | |
parent | acd7e8c78fb677f94a53080363d7059ed3b52f7b (diff) | |
download | ppe42-gcc-d78db4a0363583f7d02b6f70cb234d02a2b6a2d4.tar.gz ppe42-gcc-d78db4a0363583f7d02b6f70cb234d02a2b6a2d4.zip |
PR 47802 Test for POSIX getpwuid_r
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170471 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 9 | ||||
-rw-r--r-- | libgfortran/config.h.in | 3 | ||||
-rwxr-xr-x | libgfortran/configure | 50 | ||||
-rw-r--r-- | libgfortran/configure.ac | 20 | ||||
-rw-r--r-- | libgfortran/intrinsics/getlog.c | 4 |
5 files changed, 84 insertions, 2 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 1de3474efa8..0b0a27e9c8e 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -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 diff --git a/libgfortran/config.h.in b/libgfortran/config.h.in index fdf502b870c..67fb5f075a7 100644 --- a/libgfortran/config.h.in +++ b/libgfortran/config.h.in @@ -624,6 +624,9 @@ /* 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 diff --git a/libgfortran/configure b/libgfortran/configure index 9d3c891ca80..834bd8c51be 100755 --- a/libgfortran/configure +++ b/libgfortran/configure @@ -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 diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac index 816165988ce..d25a067e127 100644 --- a/libgfortran/configure.ac +++ b/libgfortran/configure.ac @@ -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 diff --git a/libgfortran/intrinsics/getlog.c b/libgfortran/intrinsics/getlog.c index 299ac5a368d..9e5c8de4677 100644 --- a/libgfortran/intrinsics/getlog.c +++ b/libgfortran/intrinsics/getlog.c @@ -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 ; |