Omit the special code that used __typeof__ for MIN and MAX,
[gnulib.git] / lib / getgroups.c
index 717f90e..f6808b3 100644 (file)
@@ -1,5 +1,5 @@
 /* provide consistent interface to getgroups for systems that don't allow N==0
-   Copyright (C) 1996 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1999, 2003 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 #include <stdio.h>
 #include <sys/types.h>
 
-char *xmalloc ();
+#include "xalloc.h"
 
-/* On Ultrix 4.3, getgroups (0, 0) always fails.
-   This function handles that special case and lets the system-
-   provided function handle all others.  */
+/* On at least Ultrix 4.3 and NextStep 3.2, getgroups (0, 0) always fails.
+   On other systems, it returns the number of supplemental groups for the
+   process.  This function handles that special case and lets the system-
+   provided function handle all others. */
 
 int
-getgroups (n, group)
-     size_t n;
-     GETGROUPS_T *group;
+getgroups (size_t n, GETGROUPS_T *group)
 {
-  int ng;
+  int n_groups;
   GETGROUPS_T *gbuf;
 
 #undef getgroups
@@ -44,14 +43,14 @@ getgroups (n, group)
   gbuf = NULL;
   while (1)
     {
-      gbuf = (GETGROUPS_T *) xrealloc (gbuf, n * sizeof (GETGROUPS_T));
-      ng = getgroups (n, gbuf);
-      if (ng < n)
+      gbuf = xrealloc (gbuf, n * sizeof (GETGROUPS_T));
+      n_groups = getgroups (n, gbuf);
+      if (n_groups < n)
        break;
       n += 10;
     }
 
   free (gbuf);
 
-  return ng;
+  return n_groups;
 }