Mercurial > hg > octave-jordi > gnulib-hg
changeset 18032:cbcda721f9b4
mgetgroups: port to strict OS X
The previous fix wasn't working, so use a bigger hammer (Bug#20923).
* lib/mgetgroups.c: Ignore -Wpointer-sign diagnostics.
(getgrouplist_gids) [HAVE_GETGROUPLIST]: Remove. All uses removed.
* m4/mgetgroups.m4 (gl_MGETGROUPS): Revert recent changes.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Tue, 30 Jun 2015 09:32:07 -0700 |
parents | e856c8618738 |
children | f282834ddccc |
files | ChangeLog lib/mgetgroups.c m4/mgetgroups.m4 |
diffstat | 3 files changed, 16 insertions(+), 41 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2015-06-30 Paul Eggert <eggert@cs.ucla.edu> + + mgetgroups: port to strict OS X + The previous fix wasn't working, so use a bigger hammer (Bug#20923). + * lib/mgetgroups.c: Ignore -Wpointer-sign diagnostics. + (getgrouplist_gids) [HAVE_GETGROUPLIST]: Remove. All uses removed. + * m4/mgetgroups.m4 (gl_MGETGROUPS): Revert recent changes. + 2015-06-29 Paul Eggert <eggert@cs.ucla.edu> mgetgroups: port to strict OS X
--- a/lib/mgetgroups.c +++ b/lib/mgetgroups.c @@ -33,6 +33,12 @@ #include "getugroups.h" #include "xalloc-oversized.h" +/* Work around an incompatibility of OS X 10.11: getgrouplist + accepts int *, not gid_t *, and int and gid_t differ in sign. */ +#if 4 < __GNUC__ + (3 <= __GNUC_MINOR__) +# pragma GCC diagnostic ignored "-Wpointer-sign" +#endif + static gid_t * realloc_groupbuf (gid_t *g, size_t num) { @@ -64,11 +70,6 @@ gid_t *g; #if HAVE_GETGROUPLIST -# if HAVE_GETGROUPLIST_WITH_INT -# define getgrouplist_gids(g) ((int *) (g)) -# else -# define getgrouplist_gids(g) (g) -# endif /* We prefer to use getgrouplist if available, because it has better performance characteristics. @@ -92,8 +93,7 @@ int last_n_groups = max_n_groups; /* getgrouplist updates max_n_groups to num required. */ - ng = getgrouplist (username, gid, getgrouplist_gids (g), - &max_n_groups); + ng = getgrouplist (username, gid, g, &max_n_groups); /* Some systems (like Darwin) have a bug where they never increase max_n_groups. */
--- a/m4/mgetgroups.m4 +++ b/m4/mgetgroups.m4 @@ -1,4 +1,4 @@ -#serial 7 +#serial 5 dnl Copyright (C) 2007-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -6,38 +6,5 @@ AC_DEFUN([gl_MGETGROUPS], [ - AC_CHECK_HEADERS_ONCE([grp.h]) AC_CHECK_FUNCS_ONCE([getgrouplist]) - if test "$ac_cv_func_getgrouplist" = yes; then - AC_CACHE_CHECK([for getgrouplist with int signature], - [gl_cv_getgrouplist_with_int], - [gl_cv_getgrouplist_with_int=no - gl_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#if HAVE_GRP_H - #include <grp.h> - #endif - int groups[1]; - int ngroups = 1; - ]], - [[return - getgrouplist ("root", 0, groups, &ngroups);]])], - [], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#if HAVE_GRP_H - #include <grp.h> - #endif - int groups[sizeof (gid_t) == sizeof (int) ? 1 : -1]; - int ngroups = 1; - ]], - [[return - getgrouplist ("root", 0, groups, &ngroups);]])], - [gl_cv_getgrouplist_with_int=yes])]) - ac_c_werror_flag=$gl_save_c_werror_flag]) - if test "$gl_cv_getgrouplist_with_int" = yes; then - AC_DEFINE([HAVE_GETGROUPLIST_WITH_INT], 1, - [Define to 1 if getgrouplist accepts and returns int and not gid_t.]) - fi - fi ])