about summary refs log tree commit diff
path: root/grp/initgroups.c
diff options
context:
space:
mode:
Diffstat (limited to 'grp/initgroups.c')
-rw-r--r--grp/initgroups.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/grp/initgroups.c b/grp/initgroups.c
index a700557924..73c15c6479 100644
--- a/grp/initgroups.c
+++ b/grp/initgroups.c
@@ -16,7 +16,7 @@ License along with the GNU C Library; see the file COPYING.LIB.  If
 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
-#include <ansidecl.h>
+#include <alloca.h>
 #include <unistd.h>
 #include <string.h>
 #include <grp.h>
@@ -28,8 +28,9 @@ Cambridge, MA 02139, USA.  */
    by reading the group database and using all groups
    of which USER is a member.  Also include GROUP.  */
 int
-DEFUN(initgroups, (user, group),
-      CONST char *user AND gid_t group)
+initgroups (user, group)
+     const char *user;
+     gid_t group;
 {
 #if defined (NGROUPS_MAX) && NGROUPS_MAX == 0
 
@@ -40,21 +41,23 @@ DEFUN(initgroups, (user, group),
 
   struct group *g;
   register size_t n;
+  size_t ngroups;
+  gid_t *groups;
 #ifdef NGROUPS_MAX
-  gid_t groups[NGROUPS_MAX];
+# define limit NGROUPS_MAX
+
+  ngroups = limit;
 #else
   long int limit = sysconf (_SC_NGROUPS_MAX);
-  gid_t *groups;
-  size_t ngroups;
 
   if (limit > 0)
     ngroups = limit;
   else
     /* No fixed limit on groups.  Pick a starting buffer size.  */
     ngroups = 16;
+#endif
 
   groups = __alloca (ngroups * sizeof *groups);
-#endif
 
   setgrent ();